在java平台文档http://www.oracle.com/technetwork/java/javase/jrereadme-182762.html中。关于
的评论/lib/security/local_policy.jar /lib/security/US_export_policy.jar
由于某些国家/地区的导入控制限制,Java SE Development Kit和Java SE Runtime Environment附带的Java Cryptography Extension(JCE)策略文件允许使用强大但有限的加密。
对于居住在符合条件的国家/地区的用户,JDK网站上提供了这些文件的无限强度版本,表明对加密强度没有限制。那些居住在符合条件的国家/地区的人可以下载无限强度版本,并使用无限强度文件替换强加密jar文件。 问题
答案 0 :(得分:15)
每个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 reference guide。
此外,如果您不想这样做,您可以参考以下主题寻找替代方案 -
How to avoid installing “Unlimited Strength” JCE policy files when deploying an application?
反射是线程中的用户作为解决方法。虽然我不推荐你,但你可以看看它。
我在帖子中总结了一切。你也可以参考 -
How to install Java Cryptography Extension (JCE) unlimited strength jurisdiction policy files