【发布时间】:2011-05-05 02:15:29
【问题描述】:
我在使用 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 是“我的密码”。
我的问题是当我想用 c# 中的以前的证书解密消息时。
我找到了这个类 http://blog.shutupandcode.net/?p=660,但在 X509Decrypt 方法中,PrivateKey 始终为空。
public static byte[] X509Decrypt(byte[] data, string certificateFile, string password) { // 加载证书并解密指定数据 使用 (var ss = new System.Security.SecureString()) { foreach (var keyChar in password.ToCharArray()) ss.AppendChar(keyChar); // 加载受密码保护的证书文件 X509Certificate2 证书 = 新 X509Certificate2(certificateFile, ss); 使用 (RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey) { 返回 rsa.Decrypt(数据,真); } } }我尝试传递证书文件 (.cer)
X509DecryptString(token, @"c:\CA.cer", "mypassword");并传递pvk文件(.pvk)
X509DecryptString(token, @"c:\CA.pvk", "mypassword");但始终认为 PrivateKey 属性为空。
谁能指导我使用 pvk 文件解密消息?
谢谢,
何塞
【问题讨论】:
标签: c# .net certificate private-key