今天在使用idea打包maven項目時,出現這個錯誤:java.security.InvalidKeyException: Illegal key size or default parameters。(測試也可能會出現這個問題)貌似是由於加密出現了問題。html
產生錯誤緣由:爲了數據代碼在傳輸過程當中的安全,不少時候咱們都會將要傳輸的數據進行加密,而後等對方拿到後再解密使用。咱們在使用AES加解密的時候,在遇到128位密鑰加解密的時候,沒有進行什麼特殊處理;然而,在使用256位密鑰加解密的時候,若是不進行特殊處理的話,每每會出現這個異常java.security.InvalidKeyException: Illegal key size。java
爲何會產生這樣的錯誤?程序員
咱們作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」的異常。那麼咱們怎麼解決呢?安全
如何解決?oracle
解決方案:去官方下載JCE無限制權限策略文件。框架
jdk 5: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPRmaven
jdk6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.htmlide
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