我正在尝试使用bouncy-castle库解密pkcs8加密的私钥。我使用bouncy castle提供的PEMParser
解析了包含私钥的文件。我得到了PKCS8EncryptedPrivateKeyInfo
对象。我无法从中获取PrivateKeyInfo
对象。尝试解密时出现以下异常。
org.bouncycastle.pcs.PKCSE异常:无法读取加密数据:1.2.840.113549.1.5.13不可用:没有此类提供程序:1.2.840.11 3549.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);
您是否尝试过jce.setProvider("BC");而不是jce.setProvider("1.2.840.113549.1.5.13");
编辑以添加@PeterDietman提供的解决方案:
除了使用jce.setProvider("BC");还安装BC提供商bouncycastle.org/wiki/deisplay/JA1/provider+Installation
Security.addProvider(new BouncyCastleProvider());
这就是缺少的原因