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)
分析
- 這里我用的是jdk1.8的,在jdk10下面沒問題
- 報錯是因為用到了jdk sercurity
- jdk sercurity 使用的jar包
JAVA_HOME/jre/lib/security/US_export_policy.jar
-
JAVA_HOME/jre/lib/security/US_export_policy.jar對技術出口的限制,限制了加密只有128bit,而沒有限制的則有256bit
解決方法
哎!貿(mào)易戰(zhàn)爭是無情的。但Oracle還是'很貼心'的再官網(wǎng)給我們提供了解決方案:
最好先備份?。?!最好先備份?。?!最好先備份?。?!
將兩個jar文件放到%JDK_HOME%\jre\lib\security和%JRE_HOME%\lib\security下覆蓋原來文件即可
但是Oracle需要注冊,比較麻煩這里準備了快捷下載通道