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 に答える