1. 程式人生 > >Java AES加密 Illegal key size異常

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的行,它可以有兩個值limitedunlimited,預設值是limited

預設情況下,您應該能找到一條註釋掉的行:

#crypto.policy=unlimited

 通過取消註釋該行來啟用無限制,刪除#然後重新啟動指向JVM的Java應用程式即可