14

非対称暗号化を使用してファイルを暗号化してから復号化しようとしています。makecert を使用してテスト証明書を作成し、個人のローカル マシン ストアにインストールしました。将来、この証明書を複数のサーバーにインストールする必要があるため、「-pe」フラグ、つまりエクスポート可能な秘密鍵を使用して証明書を作成しました。証明書が正常に作成され、インストールされました。mmc に「この証明書に対応する秘密鍵があります」というメモが表示されます。

現在、.NET 3.5 で RSACryptoServiceProvider を使用してデータを暗号化しようとしています。そしてそれは成功します。しかし、復号化しようとすると、「Bad key」という例外が発生します。

「-pe」オプションを使用せずに証明書を作成すると、同じコードが復号化に適しています。コードは次のとおりです。

RSA rsaKey = (RSA)myCertificate.PrivateKey;
RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider)rsaKey;
byte[] plainText = rsaCsp.Decrypt(encryptedText, true);

また、System.Security.Cryptography.Pkcs 名前空間を使用して、別の方法を試しました。

EnvelopedCms envelope = new EnvelopedCms();
envelope.Decode(encryptedText);
envelope.Decrypt();
byte[] plainText = envelope.ContentInfo.Content;

結果は同じでした...誰か助けてくれますか?

4

1 に答える 1

25

makecert.exe を使用している場合は、使用しているキーが「-sky Exchange」で作成されたことを確認してください。これがないと、ここで実装しているユースケースである暗号化/復号化ではなく、署名と認証にのみキーを使用できます。

于 2012-06-05T22:30:34.587 に答える