0

最近我遇到了来自 Oracle 的 JDK 安装,其中包含 JCE 文件,例如local_policy.jar存在于jre/lib/security目录中,但这些文件是假文件,并没有真正启用无限强度加密。将它们替换为从 Oracle 下载后,事情变得更加顺利。

现在我认为应该有一种简单的方法来对系统进行健全性测试并防止这样的混乱。所以,我想知道:

如果安装并使用了适当的 JCE jar,我可以运行哪些keytool操作才能成功?

这样,当它失败时,我知道 local_policy.jar 要么不可用,要么存在一个无用的虚拟文件,应该用真实文件换掉。

4

1 回答 1

0

正如我在各种评论中已经提到的,您可以使用getMaxAllowedKeyLength()测试来确定 jdk/jre 是否支持无限强度加密(在我的测试中,我使用了“AES”密码,但“RC5”也应该可以工作)。在测试这个功能时,你需要有正确的罐子(罐子的内容是重要的部分)。

在我的本地盒子中,加密强度有限的 jdk 有一个包含以下内容的 local_policy.jar 文件:

// Some countries have import limits on crypto strength. This policy file
// is worldwide importable.

grant {
    permission javax.crypto.CryptoPermission "DES", 64;
    permission javax.crypto.CryptoPermission "DESede", *;
    permission javax.crypto.CryptoPermission "RC2", 128, 
                                     "javax.crypto.spec.RC2ParameterSpec", 128;
    permission javax.crypto.CryptoPermission "RC4", 128;
    permission javax.crypto.CryptoPermission "RC5", 128, 
          "javax.crypto.spec.RC5ParameterSpec", *, 12, *;
    permission javax.crypto.CryptoPermission "RSA", *;
    permission javax.crypto.CryptoPermission *, 128;
};

而实力无限的jdk则有以下内容:

// Country-specific policy file for countries with no limits on crypto strength.
grant {
    // There is no restriction to any algorithms.
    permission javax.crypto.CryptoAllPermission; 
};

(请注意,US_export_policy.jar 在两种情况下都是相同的)。

于 2013-03-07T19:04:01.757 回答