JDK1.8 导致系统报错:java.security.InvalidKeyException:illegal Key Size
jdk1.8 JCE 无限制权限策略文件下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
参考文章:https://github.com/spring-projects/spring-security/issues/3118
在使用JCE 加密时,我们有时候会遇到这样的Exception:
java.security.InvalidKeyException:illegal Key Size
要解决这个报错,首先,我们需要知道其原因
这是因为用到了 jdk sercurity, 而 jdk sercurity 使用的 jar 包 $JAVA_HOME/lib/security/local_policy.jar 和 $JAVA_HOME/jre6_64/lib/security/US_export_policy.jar 中有对技术出口的限制【”万恶“的美帝啊】,加密只有 128bit, 而没有限制的则有 256bit.
那么既然人家已经限制了我们 ,我们怎么办呢 ,甲骨文还是很贴心的,在官网给我们提供了解决方案,接下来就是重头戏了!!!
解决方案
首先你要明确自己的 jdk 版本 是 1.6 还是 1.7 亦或者 1.8
我是 1.8,这里用 1.8 举例 , 其他都是一样的
解决步骤:
1、前往甲骨文官网下载 JCE 无限制权限策略文件
也可以直接在网上搜索下面图中文件名
【注意:文件名如上图所示 下载的版本一定要和当前你用的 jdk 一致
图中由左至右依次为 jdk1.6 jdk1.8 jdk1.7 的 JCE 无限制权限策略文件】
懒得找的朋友可以在我的 csdn 资源里下载,这里附上链接
2、下载下来后
对文件进行解压发现其中有两个 jar 包,将其复制
3、前往你当前使用 jdk 的安装目录
复制并覆盖 %JAVA_HOME%/jre/lib/security 下的 local_policy.jar 和 US_export_policy.jar
【注意:覆盖之前最好将原来的 local_policy.jar 和 US_export_policy.jar 备份,原因大家都懂】
4、最后一步啦
重新启动你的 tomcat,如果不出意外,你会惊喜的发现,刚刚的报错没有啦!!!!
下载无长度限制的 jce_policy-8
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
注意需下载与 JDK 版本相对应的 JCE, 解压后替换掉放到${JAVA_HOME}/jre/lib/security
目录下的两个 jar 包 local_policy.jar 和 US_export_policy.jar
转载于:http://api.crap.cn/static/help/154090390538601000274.html