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

解决方法

哎!贸易战争是无情的。但Oracle还是'很贴心'的再官网给我们提供了解决方案:

JDK6密码扩展无限制权限策略文件

JDK7密码扩展无限制权限策略文件

JDK8密码扩展无限制权限策略文件

最好先备份!!!最好先备份!!!最好先备份!!!
将两个jar文件放到%JDK_HOME%\jre\lib\security和%JRE_HOME%\lib\security下覆盖原来文件即可

但是Oracle需要注册,比较麻烦这里准备了快捷下载通道

JDK6密码扩展无限制权限策略文件

JDK7密码扩展无限制权限策略文件

JDK8密码扩展无限制权限策略文件

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容