我正在尝试使用以下方法加密字符串。这个方法以前是成功的。在 Windows 操作系统安全补丁之后,现在我收到“java.security.InvalidKeyException:非法 key 大小”
此外,我还在 C:\Program Files (x86)\Java\jdk1.7.0_67\jre\lib\security 下添加了 local_policy 和 US_export_policy jar 文件。我的操作系统是Windows7 64位。
当我运行 Java main 方法时它可以工作,但是当我运行 tomcat 应用程序时我遇到异常。
public static String encryptData() throws Exception{
byte[] saltBytes = "myegaes256encryption".getBytes("UTF-8");
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
PBEKeySpec keySpec = new PBEKeySpec("myeg@1234".toCharArray(), saltBytes, 65536, 256);
IvParameterSpec ivParameterSpec = new IvParameterSpec("myegaes256ivspec".getBytes("UTF-8"));
SecretKey secretKey = secretKeyFactory.generateSecret(keySpec);
SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getEncoded(), "AES");
//Encryption starts here
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);
byte[] encryptedBytes = cipher.doFinal("DD3E5B7BB7D3036FE7CB557B4FEEB05F".getBytes("UTF-8"));
return new Base64().encodeAsString(encryptedBytes);
}
异常(exception):
java.security.InvalidKeyException: Illegal key size at javax.crypto.Cipher.a(Unknown Source) at javax.crypto.Cipher.a(Unknown Source) at javax.crypto.Cipher.a(Unknown Source) at javax.crypto.Cipher.init(Unknown Source) at javax.crypto.Cipher.init(Unknown Source)
最佳答案
您需要将策略文件放入 jre/lib/security/
,而不是 jdk/lib/
关于java.security.InvalidKeyException : Illegal key size - After Windows OS security patch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49975231/