Search

Java - 解除 AES-256 加密預設金鑰長度限制

2014-12-15 10:12 PM

因為Java預設最大的AES加密金鑰長度為128

因此若超過此長度會拋出以下異常

  1. java.security.InvalidKeyException: Illegal key size or default parameters

此問題可在下載

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files

之後解決

下載後將local_policy.jar及US_export_policy.jar 取代jre/security底下的兩個檔案即可

若取代後依舊無法使用長度128位元以上的金鑰加密字串

則可以在系統或程式初始化時加入以下程式碼解除限制

  1. // 僅限java 7以上
  2. Field field = Class.forName("javax.crypto.JceSecurity").
  3. getDeclaredField("isRestricted");
  4. field.setAccessible(true);
  5. field.set(null, java.lang.Boolean.FALSE);
各項資料連結
Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download

No comments:

Post a Comment