加密报错:java.security.InvalidKeyException: Illegal key size

问题背景

今天调试售票系统的加密,发现加密解密再JDK10下面是ok的,再JDK8下面就GG了,搞了半天,后来发现,原来另有原因,是个坑。

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.software.dev.util.MainEntrance.Encrypt(MainEntrance.java:83)
	at com.software.dev.util.MainEntrance.main(MainEntrance.java:23)

听说,在使用JCE加密时 java.security.InvalidKeyException:illegal Key Size 这个报错是因为用到了jdk sercurity, 而jdk sercurity 使用的jar包 $JAVA_HOME/jre/lib/security/local_policy.jar$JAVA_HOME/jre/lib/security/US_export_policy.jar 中有对技术出口的限制,限制了加密只有128bit,而没有限制的则有256bit。

解决方案

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

JDK6密码扩展无限制权限策略文件
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

JDK7密码扩展无限制权限策略文件
https://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

JDK8密码扩展无限制权限策略文件
https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

在这里插入图片描述

下载后,覆盖到 $JAVA_HOME/jre/lib/security 中去,主要是local_policy.jar和 US_export_policy.jar中

在这里插入图片描述

  • 如果处理的是JRE,将两个jar文件放到 %JRE_HOME%\lib\security 下覆盖原来文件即可(最好先备份)。
  • 如果处理的是JDK,将两个jar文件也放到 %JDK_HOME%\jre\lib\security 下覆盖原来文件即可(最好先备份)
    最后,别忘了验证是否成功,如果没报错就ok了
    Process finished with exit code 0
    ————————————————
    版权声明:本文为CSDN博主「Moshow郑锴」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/moshowgame/article/details/85234286
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值