Как расшифровать зашифрованный секретный ключ PKCS8 DER с помощью пароля, в crypto ++ - PullRequest
3 голосов
/ 03 июня 2011

Я пытаюсь подписать сообщение с помощью закрытого ключа, который зашифрован, у меня, конечно, есть пароль к нему, поэтому я пытаюсь расшифровать ключ, чтобы я мог использовать его для подписи.

Я использую библиотеку 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 Ответ

3 голосов
/ 06 июня 2011

PKCS # 8 использует определенный формат шифрования, который не имеет ничего общего с Crypto ++ DefaultDecryptorWithMAC. Вы можете найти детали в спецификации здесь - http://www.rsa.com/rsalabs/node.asp?id=2130

К сожалению, в настоящее время Crypto ++ изначально не поддерживает зашифрованные ключи PKCS # 8. Благодаря поддержке ASN.1 и криптографии в библиотеке вы, безусловно, можете реализовать ее самостоятельно, но может быть проще просто расшифровать ключ с помощью инструмента командной строки openssl. Или вы можете использовать openssl в вашей программе или другую библиотеку, которая поддерживает зашифрованные ключи PKCS # 8.

...