我有一个问题,需要使用X.509证书解密消息。
我使用makecert生成了我的证书,并使用以下选项:
makecert -r -pe -n "CN=MyCertificate" -ss CA -sr CurrentUser -a sha1 -sky signature -cy authority -sv CA.pvk CA.cer
私钥是"mypassword"。
我的问题是,当我想要解密使用先前证书加密的消息时,在c#中。
我找到了这个类http://blog.shutupandcode.net/?p=660,但在X509Decrypt方法中,PrivateKey始终为空。
public static byte[] X509Decrypt(byte[] data, string certificateFile, string password) { // 加载证书并解密指定的数据 using (var ss = new System.Security.SecureString()) { foreach (var keyChar in password.ToCharArray()) ss.AppendChar(keyChar);
// 加载受密码保护的证书文件 X509Certificate2 cert = new X509Certificate2(certificateFile, ss);
using (RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey) { return rsa.Decrypt(data, true); } } }
我尝试传递证书文件(.cer)
X509DecryptString(token, @"c:\CA.cer", "mypassword");
和传递pvk文件(.pvk)
使用X509DecryptString(token, @"c:\CA.pvk", "mypassword")方法时,始终会出现PrivateKey属性为空的情况。
有没有人能指导我如何使用pvk文件解密消息?
谢谢,
Jose