AES异常java.security.InvalidKeyException: Illegal key size的问题(已解决)

说明一下,JDK1.8.0_151及其之后的版本(JDK11应该不会出这个问题),无需去官网下载 local_policy.jar US_export_policy.jar这个jar包,只需要修改Java\jdk1.8.0_151\jre\lib\security这目录下的java.security文件配置即可。

某些项目报出来的异常:

java.security.InvalidKeyException: Illegal key size

这是因为某些国家的进口管制限制,JDK默认的加解密默认不允许 256 位密钥的 AES 加解密,解决方法在1.8.0_151 版本之前,是下载官方JCE无限制强度加密策略文件然后覆盖,如果你是这个版本之前的,请直接翻到文末。

1.8.0_151以及之后版本的解决方案

至于 1.8.0_151 以及之后版本的 $JAVA_HOME/jre/lib/security/ 目录下面多了一个 policy 文件夹,里面还有两个文件夹

├── limited
│   ├── local_policy.jar
│   └── US_export_policy.jar
└── unlimited
    ├── local_policy.jar
    └── US_export_policy.jar

解决方案可以参考这篇文章:Java Unlimited Strength Crypto Policy for Java 9 or 1.8.0_151,以下内容为该文章的翻译。

从Java 1.8.0_151和1.8.0_152开始,为JVM启用 无限制强度管辖策略 有了一种新的更简单的方法。如果不启用此功能,则不能使用AES-256。

请在 jre/lib/security 文件夹中查找文件 java.security。
例如,对于Java 1.8.0_151,文件结构如下所示:

/jdk1.8.0_151
 |- /jre
      |- /lib
            |- /security
                  |- java.security

现在用文本编辑器打开java.security,并找到定义java安全性属性crypto.policy的行,它可以有两个值limited或unlimited - 默认值是limited。

默认情况下,您应该能找到一条注释掉的行:

#crypto.policy=unlimited

您可以通过取消注释该行来启用无限制,删除#:

crypto.policy=unlimited

现在重新启动指向JVM的Java应用程序即可。

1.8.0_151之前版本的解决方案

官方网站提供了JCE无限制权限策略文件的下载:

JDK6的下载地址

JDK7的下载地址

JDK8的下载地址

下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。

如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security下覆盖原来文件,记得先备份。

如果安装了JDK,将两个jar文件也放到%JDK_HOME%\jre\lib\security下。

重新启动指向JVM的Java应用程序即可。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值