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下面沒問題
- 報(bào)錯(cuò)是因?yàn)橛玫搅薺dk sercurity
- jdk sercurity 使用的jar包 JAVA_HOME/jre/lib/security/US_export_policy.jar
- JAVA_HOME/jre/lib/security/US_export_policy.jar對(duì)技術(shù)出口的限制仿畸,限制了加密只有128bit,而沒有限制的則有256bit
解決方法
哎!貿(mào)易戰(zhàn)爭(zhēng)是無(wú)情的。但Oracle還是'很貼心'的再官網(wǎng)給我們提供了解決方案:
JDK6密碼擴(kuò)展無(wú)限制權(quán)限策略文件
JDK7密碼擴(kuò)展無(wú)限制權(quán)限策略文件
JDK8密碼擴(kuò)展無(wú)限制權(quán)限策略文件
最好先備份U柑取!类垫!最好先備份I獭!阔挠!最好先備份F!购撼!
將兩個(gè)jar文件放到%JDK_HOME%\jre\lib\security和%JRE_HOME%\lib\security下覆蓋原來(lái)文件即可
但是Oracle需要注冊(cè)跪削,比較麻煩這里準(zhǔn)備了快捷下載通道
JDK6密碼擴(kuò)展無(wú)限制權(quán)限策略文件