X.509 証明書を使用してメッセージを復号化するのに問題があります。
次のオプションを指定して、makecert で証明書を生成します。
makecert -r -pe -n "CN=MyCertificate" -ss CA -sr CurrentUser -a sha1 -sky signature -cy authority -sv CA.pvk CA.cer
PrivateKey は「mypassword」でした。
私の問題は、C# で以前の証明書を使用して暗号化されたメッセージを復号化したい場合です。
このクラスhttp://blog.shutupandcode.net/?p=660を見つけましたが、X509Decryptメソッドでは常に PrivateKey が null です。
public static byte[] X509Decrypt(byte[] data, string certificateFile, string password)
{
// 証明書をロードし、指定されたデータを復号化します
使用 (var ss = new System.Security.SecureString())
{
foreach (password.ToCharArray() の var keyChar)
ss.AppendChar(keyChar);
// パスワードで保護された証明書ファイルをロードします
X509Certificate2 cert = 新しい X509Certificate2(certificateFile, ss);
使用 (RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey)
{
return rsa.Decrypt(データ、真);
}
}
}
証明書ファイル(.cer)を渡してみた
X509DecryptString(token, @"c:\CA.cer", "mypassword");
pvk ファイル (.pvk) を渡す
X509DecryptString(token, @"c:\CA.pvk", "mypassword");
ただし、常に PrivateKey プロパティが null であることを確認してください。
pvk ファイルを使用してメッセージを復号化する方法を教えてもらえますか?
ありがとう、
ホセ