0

我一直在研究密码学并且遇到了一些问题。我总是得到这个例外。

java.io.IOException:异常解密数据 - java.security.InvalidKeyException:org.bouncycastle.jce.provider.JDKPKCS12KeyStore.engineLoad(未知来源)的 org.bouncycastle.jce.provider.JDKPKCS12KeyStore.cryptData(未知来源)的非法密钥大小)

搜索 google 发现需要一个 JCE Unlimited Policy File。当你下载它时,安装说明说唯一需要做的就是将两个 jar 文件复制到 JRE 的 /security/ 文件夹中。好吧,这不起作用,我搜索了我机器的所有目录以找到任何其他 java 安装,但我没有找到。我仔细检查了文件是否正确

一些信息:

java -version 报告:
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02,混合模式,共享)

我已经使用 apt-get install sun-java6 安装了这个 Java 版本

对此有什么想法吗?

4

1 回答 1

0

我的问题的解决方案来自其他地方,我将在这里解释。在我遇到错误之前:

KeyStore ks = KeyStore.getInstance("pkcs12","BC");  
File cert = new File(certPath);     
FileInputStream fis = new FileInputStream(cert);        
ks.load(fis,certpassword.toCharArray());

现在我有:

KeyStore.Builder builder = null;
ProtectionParameter paramet = new PasswordProtection(certpassword.toCharArray());
builder = KeyStore.Builder.newInstance("PKCS12", null, new File(certPath), paramet);
KeyStore ks = builder.getKeyStore();
File cert = new File(certPath);
FileInputStream fis = new FileInputStream(cert);        
ks.load(fis, certpassword.toCharArray());

这段代码可能并不完全正确,但它可以工作。至于原因,我不知道。我只是尝试了另一种加载证书的方法,并且这种方法有效。

如果没有无限的策略文件,我还没有测试过这个解决方案是否有效。

于 2012-05-07T21:52:37.753 回答