1

我正在尝试过滤系统可用的可用加密算法以进行某些测试,但遇到了问题。

在 local_policy.jar 文件中,它包含 default_local.policy 文件中的各种条目,例如

permission javax.crypto.CryptoPermission "DES", 64;

我正在尝试通过传递来使用自定义策略文件:

-Djava.security.manager -Djava.security.policy=F:/myfile.policy

这在一定程度上有效,但收到一个错误:

java.security.policy: error parsing file:/F:/myfile.policy: 
line 65: expected [;], found [64]

由于某种原因,它不会读取引号 "" 之外的任何内容,但这适用于 local_policy.jar 文件中的内容。策略文件的内容如下:

grant {
    permission javax.crypto.CryptoPermission "DES", 64; <--- line #65
    permission javax.crypto.CryptoPermission "DESede", *;
    permission javax.crypto.CryptoPermission "RC4", 128;
    permission javax.crypto.CryptoPermission "RSA", *;
    permission javax.crypto.CryptoPermission *, 128;
};

我也尝试过使用策略工具(jdk/bin 文件夹中的policytool.exe),但我得到:

java.lang.NoSuchMethodException: javax.crypto.CryptoPermission.<init>
(java.lang.String, java.lang.String)

有任何想法吗?

谢谢。

4

1 回答 1

1

javax.crypto.CryptoPermissions 没有与安全管理器一起使用的权限,但适用于 java 加密扩展 (JCE)。也就是说,它们进入一个单独的策略文件(它或多或少与安全管理器的策略文件共享格式)。您可以在此处找到有关 JCE 的更多信息:http: //docs.oracle.com/javase/1.5.0/docs/guide/security/jce/JCERefGuide.html

如果我没记错的话(这里很可能就是这种情况),需要通过在 JRE/JDK 安装中交换文件来安装 JCE 策略文件(另请参阅此处的一些信息:Java Security: Illegal key size or default parameters?) . 据我所知,这个策略文件不能简单地通过 VM 参数指定。

于 2013-07-09T14:46:12.803 回答