使用這個加密時候就出現 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