对于Spring MVC应用程序,我们需要在cookie中保留一些标志 它将针对每个请求进行检查并设置在拦截器中。由于我们需要使应用程序变为无状态,因此我们不想在会话中存储任何内容。
我的问题是我们如何最有效地加密/解密cookie? (尽可能减少CPU /时间)。 当前,使用AES加密大约需要200毫秒的加密时间,而解密则需要花费相似的时间。考虑到我们需要针对每个请求执行此操作,因此这是非常高的开销。
使用较长时间的AES代码更新问题
public static String encrypt(String value) {
try {
IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] encrypted = cipher.doFinal(value.getBytes());
return Base64.encodeBase64String(encrypted);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public static String decrypt(String encrypted) {
try {
IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
byte[] original = cipher.doFinal(Base64.decodeBase64(encrypted));
return new String(original);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
有人可以建议这种要求的标准做法吗?
谢谢。