今天在使用idea打包maven項目時,出現這個錯誤:java.security.InvalidKeyException: Illegal key size or default parameters。(測試也可能會出現這個問題)貌似是因為加密出現了問題。
產生錯誤原因:為了數據代碼在傳輸過程中的安全,很多時候我們都會將要傳輸的數據進行加密,然后等對方拿到后再解密使用。我們在使用AES加解密的時候,在遇到128位密鑰加解密的時候,沒有進行什么特殊處理;然而,在使用256位密鑰加解密的時候,如果不進行特殊處理的話,往往會出現這個異常java.security.InvalidKeyException: Illegal key size。
為什么會產生這樣的錯誤?
我們做Java開發,或是Android開發,都會先在電腦上安裝JDK(Java Development Kit) 並配置環境變量,JDK也就是 Java 語言的軟件開發工具包,JDK中包含有JRE(Java Runtime Environment,即:Java運行環境),JRE中包括Java虛擬機(Java Virtual Machine)、Java核心類庫和支持文件,而我們今天要說的主角就在Java的核心類庫中。在Java的核心類庫中有一個JCE(Java Cryptography Extension),JCE是一組包,它們提供用於加密、密鑰生成和協商以及 Message Authentication Code(MAC)算法的框架和實現,所以這個是實現加密解密的重要類庫。
在我們安裝的JRE目錄下有這樣一個文件夾:%JAVE_HOME%\jre\lib\security(%JAVE_HOME%是自己電腦的Java路徑,一版默認是:C:\Program Files\Java,具體看自己當時安裝JDK和JRE時選擇的路徑是什么),其中包含有兩個.jar文件:“local_policy.jar ”和“US_export_policy.jar”,也就是我們平時說的jar包,再通俗一點說就是Java中包含的類庫(Sun公司的程序大牛封裝的類庫,供使用Java開發的程序員使用),這兩個jar包就是我們JCE中的核心類庫了。JRE中自帶的“local_policy.jar ”和“US_export_policy.jar”是支持128位密鑰的加密算法,而當我們要使用256位密鑰算法的時候,已經超出它的范圍,無法支持,所以才會報:“java.security.InvalidKeyException: Illegal key size or default parameters”的異常。那么我們怎么解決呢?
如何解決?
解決方案:去官方下載JCE無限制權限策略文件。
jdk 5: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR
jdk6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
JDK7的下載地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK8的下載地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下載后解壓,可以看到local_policy.jar和US_export_policy.jar以及readme.txt
如果安裝了JRE,將兩個jar文件放到%JRE_HOME%\lib\security目錄下覆蓋原來的文件。
如果安裝了JDK,還要將兩個jar文件也放到%JDK_HOME%\jre\lib\security目錄下覆蓋原來文件。
具體下載、解壓、替換步驟:
1.下載:根據自己使用的jdk版本進入對應的鏈接下載(我這里是jdk8)
2.解壓:
3.替換
/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/security
4.如果不行就重啟下軟件,刷新下maven
原文鏈接:https://blog.csdn.net/dling8/article/details/84061948