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

相關文章
相關標籤/搜索