Java "Illegal key size",尽管已安装 JCE 无限强度管辖权策略文件

标签 java encryption cryptography aes

我尝试使用 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/

相关文章:

security - 有人正在存储信用卡数据 - 他们是如何做到的?

cryptography - Java Card 中没有 AES 密码的填充

Java 的 'Keystore' 的 Python 等价物?

java - 在 Android 中通过 TCP 套接字连接时获取 "java.net.BindException: Adress already in use"

python - 使用 py2exe 编译时 passlib.hash import sha256_crypt 给出错误

java - 加速 jasperreports

c# - IIS 因 Windows Azure 存储加密而随机挂起

c++ - AES-NI 256 位 block 加密

java - 使用 Xstream 将具有对象列表的 XML 解析为 javaobject

java - 我如何制作一个带有“字符”的字符串?(Java)