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
解决方法
哎!贸易战争是无情的。但Oracle还是'很贴心'的再官网给我们提供了解决方案:
最好先备份!!!最好先备份!!!最好先备份!!!
将两个jar文件放到%JDK_HOME%\jre\lib\security和%JRE_HOME%\lib\security下覆盖原来文件即可
但是Oracle需要注册,比较麻烦这里准备了快捷下载通道