我尝试使用 256 位 AES 加密,但出现以下异常:
java.security.InvalidKeyException:非法 key 大小
如果我使用 128 位 key ,那么一切都会正常工作。
我通过替换 $JAVA_HOME$\jre\lib\security
处的两个 .jar
文件安装了 JCE Unlimited Strength Jurisdiction Policy Files。我尝试过这些文件的不同版本。我已经重新安装了较新版本的 Java 8 并更新了 PATH 环境变量。什么都不起作用。我仍然收到错误,并且 Cipher.getMaxAllowedKeyLength("AES/CBC/NoPadding")
仍然返回 128。
最佳答案
我使用的是 Windows 8。最初我安装了 Java 1.8.0_25,并且 C:\Program Files\Java
下只有一个文件夹,即 jdk1.8.0_25
。我正在替换 C:\Program Files\Java\jdk1.8.0_25\jre\lib\security
中的 jar 文件。那没有用。
安装最新版本(1.8.0_111)后,除了新的 jdk 文件夹 jdk1.8.0_111
之外,还出现了一个新文件夹:jre1.8.0_111
。
替换 C:\Program Files\Java\jre1.8.0_111\lib\security
中的两个 jar 文件修复了该问题。我还替换了 C:\Program Files\Java\jdk1.8.0_111\jre\lib\security
下的内容 - 我不确定这是否有必要,但它有效。
关于Java "Illegal key size",尽管已安装 JCE 无限强度管辖权策略文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40448500/