【问题标题】:How to decrypt a pkcs8 encrypted private key using bouncy castle?如何使用充气城堡解密 pkcs8 加密私钥?
【发布时间】:2015-06-29 15:55:26
【问题描述】:

我正在尝试使用 bouncy castle 库解密 pkcs8 加密私钥。我使用 bouncy castle 提供的PEMParser 解析了包含私钥的文件。我得到了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);

【问题讨论】:

标签: java encryption bouncycastle private-key


【解决方案1】:

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

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

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

【讨论】:

  • 是的,也试过了。这是我得到 org.bouncycastle.pkcs.PKCSException 的异常:无法读取加密数据:1.2.840.113549.1.5.13 不可用:没有这样的提供者:BC
  • @krk92 绝对应该是 setProvider("BC")。您是否实际安装了 BC 提供程序? (bouncycastle.org/wiki/display/JA1/Provider+Installation)
  • 我没有安装 BC 提供程序。现在它在安装后工作。谢谢。
  • 不客气。由于问题现已解决,请接受@christophe 的回答。
【解决方案2】:

Security.addProvider(new BouncyCastleProvider());

这就是缺少的东西

【讨论】:

    猜你喜欢
    • 2015-08-09
    • 2013-04-20
    • 2014-09-19
    • 1970-01-01
    • 2013-05-25
    • 2016-08-10
    • 2015-04-26
    • 2020-03-14
    • 2013-09-29
    相关资源
    最近更新 更多