java密鑰長度受限制問題解決
java.security.InvalidKeyException: Illegal key size or default parameters
二、錯誤中文翻譯
java安全無效密鑰異常:非法密鑰大小或默認參數
三、錯誤解釋
Illegal key size or default parameters是指密鑰長度是受限制的,java運行時環境是受限於policy文件。
文件位於${java_home}/jre/lib/security下,這種限制是因為美國對軟件出口的控制。
四、為什麽報錯
因為美國的進口管制限制,Java發布的運行環境包中的加解密有一定的限制,默認不允許256位密鑰的AES加解密
五、解決辦法
就是修改策略文件,更改成官網提供的JCE無限制權限策略文件。
JDK6的下載地址:
https://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
文件名叫:jce_policy-6.zip
JDK7的下載地址:
https://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
文件名叫:UnlimitedJCEPolicyJDK7.zip
JDK8的下載地址:
(這裏註意一下JDK8的這個包只適用於Java 1.8.0_151以前的Java 1.8版本,Java 1.8.0_151以後的版本包括Java 1.8.0_151的往後看)
https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
文件名叫:jce_policy-8.zip
下載後解壓,可以看到local_policy.jar和US_export_policy.jar以及readme.txt,
替換${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar即可
六、JDK1.8.0_151及其以後的版本怎麽解決
JDK1.8.0_151及其以後的版本無需去官網下載 local_policy.jar和US_export_policy.jar這兩個jar包,只需要修改${java_home}/jre/lib/security/ 這目錄下的java.security文件配置即可.
具體過程和說明如下:
1、說明
從Java 1.8.0_151版本開始,java公司為JVM啟用無限制強度管轄策略,有了一種新的更簡單的方法。如果不啟用此功能,則不能使用AES-256,啟用起來也非常方便。
2、看圖
看圖後說明:你會發現${java_home}/jre/lib/security/沒有了上文提到的local_policy.jar和US_export_policy.jar兩個文件,而多了一個policy文件夾,而它的下面還有兩個文件夾,在其子文件下面分別都有local_policy.jar和US_export_policy.jar兩個文件。而它的兩個子文件夾的含義就是limited(有限制)和unlimited(無限制),這下我相信你應該明白了。沒錯,我們直接啟動unlimited(無限制)即可。
3、啟動unlimited(無限制)
把java.security文件的第826行的註釋去掉即可,如下圖所示:
4、重啟java項目即可。
java密鑰長度受限制問題解決