AES 加密遇到的 java.security.InvalidKeyException: Illegal key size

java.security.InvalidKeyException: Illegal key size

Exception in thread "main" java.security.InvalidKeyException: Illegal key size
    at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039)
    at javax.crypto.Cipher.implInit(Cipher.java:805)
    at javax.crypto.Cipher.chooseProvider(Cipher.java:864)
    at javax.crypto.Cipher.init(Cipher.java:1396)
    at javax.crypto.Cipher.init(Cipher.java:1327)
    at com.yuan.algorithmsexp.algorithms_aes_CBC.encrypt(algorithms_aes_CBC.java:53)
    at com.yuan.algorithmsexp.algorithms_aes_CBC.main(algorithms_aes_CBC.java:30)

分析

  1. 這里我用的是jdk1.8的,在jdk10下面沒問題
  2. 報錯是因為用到了jdk sercurity
  3. jdk sercurity 使用的jar包 JAVA_HOME/jre/lib/security/local_policy.jar 和JAVA_HOME/jre/lib/security/US_export_policy.jar
  4. JAVA_HOME/jre/lib/security/local_policy.jar 和JAVA_HOME/jre/lib/security/US_export_policy.jar對技術出口的限制,限制了加密只有128bit,而沒有限制的則有256bit

解決方法

哎!貿(mào)易戰(zhàn)爭是無情的。但Oracle還是'很貼心'的再官網(wǎng)給我們提供了解決方案:

JDK6密碼擴展無限制權(quán)限策略文件

JDK7密碼擴展無限制權(quán)限策略文件

JDK8密碼擴展無限制權(quán)限策略文件

最好先備份?。?!最好先備份?。?!最好先備份?。?!
將兩個jar文件放到%JDK_HOME%\jre\lib\security和%JRE_HOME%\lib\security下覆蓋原來文件即可

但是Oracle需要注冊,比較麻煩這里準備了快捷下載通道

JDK6密碼擴展無限制權(quán)限策略文件

JDK7密碼擴展無限制權(quán)限策略文件

JDK8密碼擴展無限制權(quán)限策略文件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容