您的位置:首页 > 编程语言 > Java开发

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

2021-04-25 11:34 896 查看

故障描述

使用这个加密时候就出现 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包,正常。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: