运维开发网

Java应用AES对称解密遭遇异常处理方法

运维开发网 https://www.qedev.com 2021-04-25 15:42 出处:51CTO 作者:喵来个鱼
故障描述使用这个加密时候就出现Illegalkeysize错误,查阅资料知道了如果密钥大于128,会抛出上述异常。因为密钥长度是受限制的,java运行时环境读到的是受限的policy文件,文件位于/jre/lib/security下,这种限制是因为美国对软件出口的控制。Java默认使用的解密包是local_policy.jar和US_export_policy.jar,但是这个默认的只支持128位

故障描述

Java应用AES对称解密遭遇异常处理方法

使用这个加密时候就出现 Illegal key size 错误,查阅资料知道了如果密钥大于128, 会抛出上述异常。因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件,文件位于/jre/lib/security下, 这种限制是因为美国对软件出口的控制。

Java 默认使用的解密包是 local_policy.jar 和 US_export_policy.jar,但是这个默认的只支持 128位的解密(java 版本在 1.8.0_161之后就没有这个问题了,默认是支持)。我们的版本是 1.8.0_151 正好默认是只支持 128位的解密(其实不是不支持,只是默认配置的不支持)。

[root@localhost ~]# java -version

java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

解决方法

  • 方法一
[root@localhost ~]# cd /usr/local/jdk
jdk/          jdk1.8.0_151/

[root@localhost ~]# cd /usr/local/jdk1.8.0_151/
[root@localhost jdk1.8.0_151]# sed -i 's/^#crypto.policy.*/crypto.policy=unlimited/g' /usr/local/jdk/jre/lib/security/java.security
  • 方法二
[root@localhost jdk1.8.0_151]# tar czf policy_limited.tar.gz jre/lib/security/policy/limited/
[root@localhost jdk1.8.0_151]# cp -aR jre/lib/security/policy/unlimited/* jre/lib/security/policy/limited/
cp:是否覆盖"jre/lib/security/policy/limited/local_policy.jar"? y
cp:是否覆盖"jre/lib/security/policy/limited/US_export_policy.jar"? y

再次java -jar运行jar包,正常。

0

精彩评论

暂无评论...
验证码 换一张
取 消