次のパラメーターを指定してmakecertを使用してx509証明書を作成しています。
makecert -r -pe -n "CN = Client" -ss MyApp
この証明書を使用して、RSAアルゴリズムを使用してデータを暗号化および復号化します。Windows証明書ストアで生成された証明書を調べたところ、すべて問題ないようです(秘密鍵があり、公開鍵は1024ビットのRSA鍵などです)。
今、私はこのC#コードを使用してデータを暗号化します:
X509Store store = new X509Store("MyApp", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectName, "Client", false);
X509Certificate2 _x509 = certs[0];
using (RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)_x509.PublicKey.Key)
{
byte[] dataToEncrypt = Encoding.UTF8.GetBytes("hello");
_encryptedData = rsa.Encrypt(dataToEncrypt, true);
}
Encryptメソッドを実行すると、「Badkey」というメッセージとともにCryptographicExceptionが発生します。
コードは大丈夫だと思います。おそらく、証明書を正しく作成していません。コメントはありますか?ありがとう
----------------編集--------------
OpenSslを使用して証明書を作成する方法を知っている人がいれば、それも私にとって有効な答えです。