如何在crypto ++中使用密码解密PKCS8 DER加密私钥

时间:2011-06-02 21:11:54

标签: openssl crypto++

我正在尝试使用加密的私钥来签名邮件,我当然有密码,所以我正在尝试解密密钥,以便我可以使用它来签名。

我正在使用C ++库crypto++,这是我试图用来从文件中读取密钥的代码

string keyString;
FileSource fs(keyFileName.c_str(), true, new DefaultDecryptorWithMAC(passphrase, new StringSink(keyString)));

执行此操作时,它会上升CryptoPP::DefaultDecryptor::KeyBadErr,我知道我有正确的密码,因为我设法使用openssl使用以下命令行解密密钥:

openssl pkcs8 -inform DER -passin pass:PASSPHRASE < emisor.key

这是我的第一篇文章,我不确定我是否遵循所有规则来提问,但任何帮助或提示都将不胜感激。

此致

1 个答案:

答案 0 :(得分:3)

PKCS#8使用与Crypto ++的DefaultDecryptorWithMAC无关的特定加密格式。您可以在此处查看详细信息 - http://www.rsa.com/rsalabs/node.asp?id=2130

不幸的是,Crypto ++目前不支持加密的PKCS#8密钥。使用库中的ASN.1和加密支持,您当然可以自己实现它,但使用openssl命令行工具简单地解密密钥可能更容易。或者您可以在程序中使用openssl,或者使用支持加密PKCS#8密钥的其他库。

相关问题