代码片段
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
RSA加密解密不能用同一个密钥,用公钥加密就必须用私钥解密,用私钥加密只能用公钥解密。
你上面的代码用私钥加密,还用私钥解密,当然会出错了
上面的代码只能用 用公钥进行加密,用私钥解密
用私钥加,公钥解密一般用来进行验证身份,微软提供了另一种方法实现。
你好,我做加密的时候出现 初始化 RSACryptoServiceProvider对象 ,出现 对象已存在的错误。
使用参数new RSACryptoServiceProvider(
new CspParameters { Flags= CspProviderFlags.UserMachineKeyStore,KeyContainerName="ccccccccccc"});
如果修改KeyContainerName 的值就可以了。难道 CspProviderFlags.UseMachineKeyStore 秘钥容器中已经存在了同名的秘钥对,然后就不能初始化了???求解?
我在这里看到了一些资料http://www.cnblogs.com/happinessCodes/archive/2010/08/02/1790697.html