如何使用充气城堡解密pkcs8加密私钥?

krk*_*k92 5 java encryption bouncycastle private-key

我正在尝试使用充气城堡库解密pkcs8加密私钥.我使用PEMParserbouncy castle提供的解析包含私钥的文件.我有了PKCS8EncryptedPrivateKeyInfo对象.我无法从中获取PrivateKeyInfo对象.我在尝试解密时收到以下异常.

org.bouncycastle.pkcs.PKCSException:无法读取加密数据:1.2.840.113549.1.5.13不可用:没有这样的提供者:1.2.840.113549.1.5.13

这是我用过的代码

PEMParser parser = new PEMParser(br);
PKCS8EncryptedPrivateKeyInfo pair =       (PKCS8EncryptedPrivateKeyInfo)parser.readObject();
JceOpenSSLPKCS8DecryptorProviderBuilder jce = new JceOpenSSLPKCS8DecryptorProviderBuilder();
                jce.setProvider("1.2.840.113549.1.5.13");
                InputDecryptorProvider decProv = jce.build(password.toCharArray());
                PrivateKeyInfo info = pair.decryptPrivateKeyInfo(decProv);
Run Code Online (Sandbox Code Playgroud)

Chr*_*phe 5

你试过jce.setProvider("BC"); 而不是jce.setProvider("1.2.840.113549.1.5.13");

编辑以添加@PeterDettman提供的解决方案:

除了使用jce.setProvider("BC"); 还安装BC提供商bouncycastle.org/wiki/display/JA1/Provider+Installation