我一直在使用密码术并遇到一些问题。 我总是得到这个例外。
java.io.IOException:异常解密数据 - java.security.InvalidKeyException:非法密钥大小 在org.bouncycastle.jce.provider.JDKPKCS12KeyStore.cryptData(未知来源) 在org.bouncycastle.jce.provider.JDKPKCS12KeyStore.engineLoad(未知来源)
搜索google,发现需要JCE Unlimited Policy File。 当您下载它时,安装说明说明唯一需要做的事情 是将两个jar文件复制到JRE的/ security /文件夹中。 那不起作用,我搜索了我的机器的所有目录 任何其他java安装,我没有找到。我仔细检查了文件是否正确
一些信息:
java -version报告:
java版“1.6.0_26”
Java(TM)SE运行时环境(版本1.6.0_26-b03)
Java HotSpot(TM)客户端VM(版本20.1-b02,混合模式,共享)
我使用apt-get install sun-java6
有关于此的任何想法吗?
答案 0 :(得分: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());
这段代码可能不完全正确,但可行。 至于这个原因,我没有任何线索。 我只是尝试了另一种加载证书的方式,这个方法有效。
我没有测试过这个解决方案是否可以在没有无限制的策略文件的情况下运行。