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密鑰長度受限制問題解決
看圖後說明:你會發現${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行的註釋去掉即可,如下圖所示:
java密鑰長度受限制問題解決
4、重啓java項目即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章