Search

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

2014-12-15 10:12 PM

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

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

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位元以上的金鑰加密字串

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

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

No comments:

Post a Comment