local_policy.jar和US_export_policy.jar与Unlimited Strength Vs Default不同.

Joh*_*son 11 java linux jce

在java平台文档http://www.oracle.com/technetwork/java/javase/jrereadme-182762.html中.关于评论

/lib/security/local_policy.jar /lib/security/US_export_policy.jar


无限强度Java密码学扩展

由于某些国家/地区的导入控制限制,Java SE Development Kit和Java SE Runtime Environment附带的Java Cryptography Extension(JCE)策略文件允许使用强大但有限的加密.

JDK网站上提供了这些文件的无限强度版本,表明对加密强度没有限制,适用于符合条件的国家/地区的用户.那些居住在符合条件的国家/地区的人可以下载无限强度版本,并使用无限强度文件替换强加密jar文件.问题

  1. 每个JDK包都附带local_policy.jar和US_export_policy.jar吗?
  2. 默认local_policy.jar和US_export_policy.jar的限制是什么.这是关键尺寸吗?
  3. 如果我需要使用128位密钥,则需要使用Unlimited Strength Java Cryptography
    Extension
  4. 有没有办法可以将这两个罐子保存在外部路径中并加载它.因为我有更多50台服务器而不是每台JDK,我宁愿将它保存在一个中心位置.

Ani*_*kur 16

每个JDK包都附带local_policy.jar和US_export_policy.jar吗?

对.自1.4版本以来,JCE已集成到Java 2 SDK中.

默认local_policy.jar和US_export_policy.jar的限制是什么.这是关键尺寸吗?

是的,这是关键尺寸.我不允许128位以上的东西.您可以使用检查算法的最大大小int maxKeyLen = Cipher.getMaxAllowedKeyLength("AES");

如果我需要使用128位密钥,则需要使用Unlimited Strength Java Cryptography Extension

对于128位密钥加密,我认为你不需要Unlimited Strength Java Cryptography Extension jar.默认的应该可以正常工作.

有没有办法可以将这两个罐子保存在外部路径中并加载它.因为我有更多50台服务器而不是每台JDK,我宁愿将它保存在一个中心位置.

如上所述,如果您使用128位密钥进行加密,则不应出现这种情况,但如果您使用的是更长的密钥(例如256),则需要获得无限强度的jar并替换它们$JAVA_HOME/jre/lib/security.与JDK/JRE本身一样,如果不是分布式服务器,则无法使其集中化.您需要在每台服务器上更换它.

请参阅oracles 参考指南.

此外,如果您不想这样做,您可以参考以下主题以寻找替代方案 -

部署应用程序时如何避免安装"Unlimited Strength"JCE策略文件?

反射是线程中的用户作为解决方法.虽然我不推荐你,但你可以看看它.

我在帖子中总结了一切.你也可以参考 -

如何安装Java Cryptography Extension(JCE)无限强度管辖权策略文件