我正在尝试使用加密的私钥来签名邮件,我当然有密码,所以我正在尝试解密密钥,以便我可以使用它来签名。
我正在使用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
这是我的第一篇文章,我不确定我是否遵循所有规则来提问,但任何帮助或提示都将不胜感激。
此致
重
答案 0 :(得分:3)
PKCS#8使用与Crypto ++的DefaultDecryptorWithMAC
无关的特定加密格式。您可以在此处查看详细信息 - http://www.rsa.com/rsalabs/node.asp?id=2130
不幸的是,Crypto ++目前不支持加密的PKCS#8密钥。使用库中的ASN.1和加密支持,您当然可以自己实现它,但使用openssl命令行工具简单地解密密钥可能更容易。或者您可以在程序中使用openssl,或者使用支持加密PKCS#8密钥的其他库。