我已经将JCE Unlimited Strength安装到JAVA_HOME\lib\security
但是,我仍然得到 128 的 Cipher.getMaxAllowedKeyLength("AES")
。
我想知道我是否将 JCE 安装在错误的位置。
我在 2 个地方安装了 Java。
- C:\Program Files\Java\jre7
- C:\Development\Java\jdk1.6.0_21
谁能告诉我JCE无限强度的正确安装位置在哪里? 非常感谢您的帮助。
我的代码:
KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(256); SecretKey secretKey = generator.generateKey();
byte[] raw= secretKey.getEncoded();
SecretKeySpec sskey= new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
if (mode == Cipher.ENCRYPT_MODE) {
Cipher.getMaxAllowedKeyLength("AES"));
cipher.init(Cipher.ENCRYPT_MODE, sskey);
CipherInputStream cis = new CipherInputStream(is, cipher);
doCopy(cis, os);
} else if (mode == Cipher.DECRYPT_MODE) {
cipher.init(Cipher.DECRYPT_MODE, sskey);
CipherOutputStream cos = new CipherOutputStream(os, cipher);
doCopy(is, cos);
}
最佳答案
您需要将文件安装到要运行代码的 JVM 中。为了安全起见,我建议在两者中都安装它。
我注意到您有两个不同的版本:用于 JRE 的 Java 7 和用于 SDK 的 Java 6。请记住,Java 6 和 7 有不同的无限强度策略文件,因此您需要下载这两套文件。
- 对于 JRE,请安装到
C:\Program Files\Java\jre7\lib\security
。 - 对于 JDK,请安装到
C:\Development\Java\jdk1.6.0_21\jre\lib\security
。
关于java - 安装了 JCE Unlimited Strength,但不支持 AES 256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25320705/