Java AES加密 Illegal key size異常
Java實現AES加密,丟擲異常如下:
java.security.InvalidKeyException: Illegal key size
原因:
Illegal key size or default parameters 是指金鑰長度受限制,
java執行時環境讀到的是受限的policy檔案。
policy檔案位於${java_home}/jre/lib/security 目錄下。
這種限制是因為美國對軟體出口的控制。
解決辦法1:
去除該限制只需下載 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files,
下載包的readme.txt 有安裝說明,即替換
${jdk_home}/jre/lib/security
${jre_home}/lib/security
目錄下的 local_policy.jar 和 US_export_policy.jar 檔案。
解決辦法2:
使用JDK 1.8.0_151 版本的會發現,在 $JAVA_HOME/jre/lib/security/
目錄下面多了一個 policy
資料夾,裡面還有兩個資料夾limited 和 unlimited;
從Java 1.8.0_151開始,為JVM啟用無限制強度管轄策略 有了一種新的更簡單的方法。如果不啟用此功能,則不能使用AES-256。
用文字編輯器開啟java.security
,並找到定義java安全性屬性crypto.policy
的行,它可以有兩個值limited
或unlimited
,預設值是limited
。
預設情況下,您應該能找到一條註釋掉的行:
#crypto.policy=unlimited
通過取消註釋該行來啟用無限制,刪除#然後
重新啟動指向JVM的Java應用程式即可。