3

いくつかのX.509証明書を使用してcryptoapiでファイルを暗号化して署名しようとしています。このファイルをopensslで検証して復号化したい。

CryptSignAndEncryptMessageWindowsでは、この関数を使用してデータを暗号化して署名する必要があると思います。私はMSDNのこの例を使用して、署名および暗号化されたメッセージを作成しました。

opensslを使用してこのファイルを復号化/検証するにはどうすればよいですか?メッセージの長さが含まれているため(Windows BLOBから)、メッセージから最初の4バイトを削除しました。呼び出すopenssl -asn1parseと、opensslによって解析可能であることを示す出力が表示されます。

opensslで署名を確認しようとすると、エラーが発生します。

openssl rsautl -verify -inkey AlonsoCert.pem -keyform pem -certin -in sandvout-without-4byte.txt
RSA operation error
3073579208:error:0406706C:rsa routines:RSA_EAY_PUBLIC_DECRYPT:data greater than mod len:rsa_eay.c:680:
4

3 に答える 3

1

ASN.1ダンプ情報は、CryptoAPIコードからPKCS#7CMS出力を作成したことを示しています。その結果、基本的なOpenSSLの復号化および検証方法を使用できなくなります。

代わりに、次のcmsモードを使用してください。

openssl cms -decrypt -inform DER -in sandvout-without-4byte.txt 
    -out decrypted.bin -recip testkey.pfx

(注:これまでこのモードを使用したことがないので、提案した構文は正しいと思います。いずれにしても、これがこれを解決する正しい方向へのステップになるはずです。)

于 2012-12-03T11:04:07.017 に答える
1

CryptSignAndEncryptメッセージは、空のASN.1パラメーターフィールドを持つRC4暗号を使用しているようであり、OpenSSLソースを見ると、IV(RC4には必要ありません)を生成しようとするとopensslチョークが発生します。

CryptAndSignMessageで他の暗号(たとえばAES)を使用してみてください。とにかく、RC4は非常に古く、安全ではなく、時代遅れです。

于 2012-12-05T19:16:41.097 に答える
1

openssl smimeを使用して検証および/または復号化してみてください。構文はかなり単純ですが、ここで情報を見つけることができます:http ://www.openssl.org/docs/apps/smime.html

于 2012-12-05T19:31:11.547 に答える