3

我正在尝试使用加密的私钥对消息进行签名,我当然有密码,所以我正在尝试解密密钥以便我可以使用它来签名。

我正在使用 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

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

问候,

重的

4

1 回答 1

3

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

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

于 2011-06-06T16:23:41.897 回答