1. 程式人生 > >使用AES時出現 Illegal key size or default parameters 時的解決辦法

使用AES時出現 Illegal key size or default parameters 時的解決辦法

 當我們把金鑰定為大於128時(即192或256)時,就會出現這個錯誤:Illegal key size or default parameters 這是因為Java預設不能處理這麼長的key。

Java幾乎各種常用加密演算法都能找到對應的實現。因為美國的出口限制,Sun通過許可權檔案(local_policy.jar、US_export_policy.jar)做了相應限制。因此存在一些問題:
●金鑰長度上不能滿足需求(如:java.security.InvalidKeyException: Illegal key size or default parameters);
●部分演算法未能支援,如MD4、SHA-224等演算法;
●API使用起來還不是很方便;一些常用的進位制轉換輔助工具未能提供,如Base64編碼轉換、十六進位制編碼轉換等工具。

    Oracle在其官方網站上提供了無政策限制許可權檔案(Unlimited Strength Jurisdiction Policy Files),我們只需要將其部署在JRE環境中,就可以解決限制問題。

      下載的壓縮包中僅有一個目錄,也就是jce目錄。該目錄中包含了4個檔案:README.txt、COPYRIGHT.html、local_policy.jar和US_export_policy.jar。其中包含的兩個jar檔案正是此次配置中用到的檔案。
      我們可以檢視上述README.txt檔案,你需要在JDK的JRE環境中,或者是JRE環境中配置上述兩個jar檔案。
      切換到%JDK_Home%\jre\lib\security目錄下,對應覆蓋local_policy.jar和US_export_policy.jar兩個檔案。同時,你可能有必要在%JRE_Home%\lib\security目錄下,也需要對應覆蓋這兩個檔案。
      配置許可權檔案的最終目的是為了使應用在執行環境中獲得相應的許可權,可以加強應用的安全性。通常,我們在應用伺服器上安裝的是JRE,而不是JDK。因此,這就很有必要在應用伺服器的%JRE_Home%\lib\security目錄下,對應覆蓋這兩個許可權檔案。很多開發人員往往忽略了這一點,導致事故發生。

替換local_policy.jar和US_export_policy.jar兩個檔案的路徑:

D:\Java\jre7\lib\security

D:\Java\jdk1.7.0_25\jre\lib\security

其中:D:\Java\jdk1.7.0_25為jdk安裝路徑