我们需要在cookie中为spring MVC应用程序保留一些标志
每一个请求都会被检查并设置在拦截器中。因为我们需要使应用程序无状态,所以我们不想在会话中存储任何东西。
我的问题是我们如何最有效地加密/解密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;
}
有人能为这种需求提出标准实践吗?
提前谢谢。