首页新闻找找看学习计划

RSACryptoServiceProvider 解密异常(不正确的项)

0
悬赏园豆:20 [已解决问题] 解决于 2013-06-13 10:06

代码片段
RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider();

string privateK = rsa1.ToXmlString(true);
string publicK = rsa1.ToXmlString(false); 

rsa1.FromXmlString(privateK) 

byte[] source = System.Text.ASCIIEncoding.ASCII.GetBytes("dskaldkashkjdsakjdadsa");
byte[] ss=rsa1.Encrypt(source,false);

using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())

try
{
rsa.FromXmlString(privateK); 

byte[] ss1 = rsa.Decrypt(ss,false);//解密异常

}
catch (Exception es)
{
//fail();
}

为什么异常?用的是公钥解密而已#24

迷失路灯的主页 迷失路灯 | 初学一级 | 园豆:7
提问于:2013-04-09 11:13
< >
分享
最佳答案
0

RSA加密解密不能用同一个密钥,用公钥加密就必须用私钥解密,用私钥加密只能用公钥解密。

你上面的代码用私钥加密,还用私钥解密,当然会出错了

上面的代码只能用 用公钥进行加密,用私钥解密

用私钥加,公钥解密一般用来进行验证身份,微软提供了另一种方法实现。

收获园豆:20
^上善若水^ | 菜鸟二级 |园豆:227 | 2013-04-09 14:20

你好,我做加密的时候出现 初始化 RSACryptoServiceProvider对象 ,出现 对象已存在的错误。

使用参数new RSACryptoServiceProvider(

new CspParameters { Flags= CspProviderFlags.UserMachineKeyStore,KeyContainerName="ccccccccccc"});

如果修改KeyContainerName 的值就可以了。难道 CspProviderFlags.UseMachineKeyStore 秘钥容器中已经存在了同名的秘钥对,然后就不能初始化了???求解?

我在这里看到了一些资料http://www.cnblogs.com/happinessCodes/archive/2010/08/02/1790697.html

 

张 博 | 园豆:206 (菜鸟二级) | 2016-01-29 14:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册