项目中调用第三方接口,使用ASE加密时密钥过长抛出异常,记录一下bug解决方案。
原因:JDK受版本安全限制,默认只允许128位长度以内的。秘钥长度,如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. java运行时环境默认读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制所造成的的.JDK1.8之后已经兼容了该问题。
解决办法参照:【精选】JDK的AES加密异常java.security.InvalidKeyException: Illegal key size 的解决方法(已解决)_小刀的刀的博客-CSDN博客
新增一种解决办法:
现有jdk版本:jdk1.8.0_111
jdk版本问题导致,可以安装最新版本JDK,也可以直接使用压缩包里的两个jar替换掉
目录jdk安装目录:D:\tool\Java\jdk1.8.0_111\jre\lib\security,替换这两个文件就ok了
local_policy.jar, US_export_policy.jar
替换jar包下载路径链接:https://pan.baidu.com/s/1I6ewwa4-AlbgCBzTq8d5UQ
提取码:fjms