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

故障描述

image-20210425112213486

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

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

[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包,正常。ui

相关文章
相关标签/搜索