无法将CryptoPermission添加到java.policy文件中

时间:2013-07-03 09:51:56

标签: java security cryptography jce

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

在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)

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分: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参数简单指定。