• 已删除用户
Administrator
发布于 2019-11-14 / 3 阅读
0

JCE无限强度管辖权策略文件解释

JAVA 支持所有的加密套件,但是由于美国的出口限制的原因,JDK 发行版本中加解密有一定的限制,比如默认不允许 256 位密钥的 AES 加解密,解决方法就是修改策略文件。Oracle 允许下载强加密的未限制版本,其实就是几个 jar 包形式的策略文件(local_policy.jarUS_export_policy.jar)。

在未授权的情况下,密钥大于 128 时(比如微信支付退款回调解密),代码会抛出以下错误:

java.security.InvalidKeyException: Illegal key size or default parameters

我们团队在 2020 年的对接项目时就遇到过这个问题,我仅仅是把解决方案的帖子发到了群里分享给了团队,然后修改了我们自己的 jdk 的镜像,问题无感的解决了。时隔近三年遇到相同问题时老员工也已经全不记得了,解释美国出口限制JCE无限强度管辖权策略文件几个名词时也是一脸懵逼。这里做下整理输出,以后再遇到就不发别人的博客、帖子了。

什么是 JCE

JCE(Java Cryptography Extension)是一组包,它们提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现。

JCE 无限强度管辖策略文件Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files。是 Oracle 官方解决 JDK 美国的出口限制问题的策略文件,包含local_policy.jarUS_export_policy.jar两个 jar 包。

解决方案

  • 对于jdk1.8.0_151以前的版本,下载一致版本的 JCE 无限强度管辖策略文件,覆盖到${JAVA_HOME}/jre/lib/security目录即可。

  • 对于jdk1.8.0_151和以后的版本,无需下载JCE 无限强度管辖策略文件,只需要修改${JAVA_HOME}/jre/lib/security/java.security,将注释掉的 #crypto.policy=unlimited然后保存即可。

文件下载