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

Openssl 如何在crypto+中使用密码解密PKCS8 DER加密私钥+;,openssl,crypto++,Openssl,Crypto++,我试图使用加密的私钥对消息进行签名,当然我有它的密码,所以我试图解密密钥,以便使用它进行签名 我使用C++库密码++,这是我试图用文件从文件中读取的代码。 string keyString; FileSource fs(keyFileName.c_str(), true, new DefaultDecryptorWithMAC(passphrase, new StringSink(keyString))); 执行此操作时,会出现一个CryptoPP::DefaultDecryptor::Key

我试图使用加密的私钥对消息进行签名,当然我有它的密码,所以我试图解密密钥,以便使用它进行签名

我使用C++库<代码>密码++<代码>,这是我试图用文件从文件

中读取的代码。
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
opensslpkcs8-inform DER-passin pass:PASSPHRASE
这是我的第一篇帖子,我不确定我是否遵循了所有的规则来提问,但任何帮助或提示都将不胜感激

问候,

heavy

PKCS#8使用的特定加密格式与Crypto++的
DefaultDecryptorWithMAC
无关。您可以在此处的规范中找到详细信息-


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

Crypto++现在支持PEM编码密钥,包括在openssl下加密的密钥。请参见Crypto++wiki上的。但它仍然缺少PKCS#8加密格式。