509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection storecollection = (X509Certificate2Collection)store.Certificates;
X509Certificate2 mySert = null;
foreach (X509Certificate2 x509 in storecollection)
{
//取出指定的证书
if (x509.Subject.Equals("CN=testkey, C=CN"))
{
mySert = x509;
}
}
if (mySert != null)
{
try
{
String sourceText = "测试一下!";
Byte[] sourceBytes = Encoding.UTF8.GetBytes(sourceText);
RSACryptoServiceProvider myRSACryptoServiceProvider = (RSACryptoServiceProvider)mySert.PublicKey.Key;
Byte[] targetBytes = myRSACryptoServiceProvider.Encrypt(sourceBytes, false); //这个地方就出错了,应该是不能直接取密钥
RSACryptoServiceProvider myRSACryptoServiceProvider2 = (RSACryptoServiceProvider)mySert.PrivateKey;
byte[] sourceBytes2 = myRSACryptoServiceProvider2.Decrypt(targetBytes, false); string targetText = Encoding.UTF8.GetString(sourceBytes2);
Console.WriteLine("解密:" + targetText);
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
到解密的时候不知道该怎么做了,网上找了都是用key的密码的方法,应该可以直接用密钥解密的,有谁知道吗?证书里包含公钥和密钥了
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection storecollection = (X509Certificate2Collection)store.Certificates;
X509Certificate2 mySert = null;
foreach (X509Certificate2 x509 in storecollection)
{
//取出指定的证书
if (x509.Subject.Equals("CN=testkey, C=CN"))
{
mySert = x509;
}
}
if (mySert != null)
{
try
{
String sourceText = "测试一下!";
Byte[] sourceBytes = Encoding.UTF8.GetBytes(sourceText);
RSACryptoServiceProvider myRSACryptoServiceProvider = (RSACryptoServiceProvider)mySert.PublicKey.Key;
Byte[] targetBytes = myRSACryptoServiceProvider.Encrypt(sourceBytes, false); //这个地方就出错了,应该是不能直接取密钥
RSACryptoServiceProvider myRSACryptoServiceProvider2 = (RSACryptoServiceProvider)mySert.PrivateKey;
byte[] sourceBytes2 = myRSACryptoServiceProvider2.Decrypt(targetBytes, false); string targetText = Encoding.UTF8.GetString(sourceBytes2);
Console.WriteLine("解密:" + targetText);
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
到解密的时候不知道该怎么做了,网上找了都是用key的密码的方法,应该可以直接用密钥解密的,有谁知道吗?证书里包含公钥和密钥了
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货