======= RSA 加密每次结果都不一样,为什么?急!! 在线等,立即结帖 ======

时间:2021-07-20 04:34:26
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
string Key = ...// 这里使用一个固定的字符串,是以前用 ToXmlString 生成的,每次使用同样的一个字符串
rsa.FromXmlString(Key);
Encoding enc = Encoding.Unicode;// 将字符串转换成字节数组
byte[] org = enc.GetBytes(userID);
byte[] encyed = rsa.Encrypt(org,false);  // 每次结果 encyed 都不一样,怎么办?

6 个解决方案

#1


ToXmlString(true)把私钥也导出来

#2


试过了,不管用,而且我只加密不解密,不需要私钥的

#3


你的私钥变了。ToXmlString(true)把私钥也导出来,然后再FromXmlString(Key);就可以了

#4




******************************************************************************

试过了,不管用,而且我只加密不解密,不需要私钥的

******************************************************************************* 



我用的是 .net framework 2.0, 是2.0有问题,还是用法不对?

#5


up

#6


using System;
using System.Security.Cryptography;
using System.IO;
using System.Text;

namespace RSADemo
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
RSACryptoServiceProvider rsa=new RSACryptoServiceProvider();
Console.WriteLine(rsa.ToXmlString(false));
Console.WriteLine(rsa.ToXmlString(true));
//获得包含公钥的参数
RSAParameters rsap=rsa.ExportParameters(false);
//获得包含公钥与私钥的参数
RSAParameters rsapp=rsa.ExportParameters(true);

rsa.ImportParameters(rsap);
string message=Console.ReadLine();
byte[] data=Encoding.Default.GetBytes(message);
//用公钥对信息进行加密
byte[] eMessage=rsa.Encrypt(data,false);
Console.WriteLine(Convert.ToBase64String(eMessage));

rsa.ImportParameters(rsapp);
byte[] dMessage=rsa.Decrypt(eMessage,false);
Console.WriteLine(Encoding.Default.GetString(dMessage));

Console.ReadLine();
}
}
}

#1


ToXmlString(true)把私钥也导出来

#2


试过了,不管用,而且我只加密不解密,不需要私钥的

#3


你的私钥变了。ToXmlString(true)把私钥也导出来,然后再FromXmlString(Key);就可以了

#4




******************************************************************************

试过了,不管用,而且我只加密不解密,不需要私钥的

******************************************************************************* 



我用的是 .net framework 2.0, 是2.0有问题,还是用法不对?

#5


up

#6


using System;
using System.Security.Cryptography;
using System.IO;
using System.Text;

namespace RSADemo
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
RSACryptoServiceProvider rsa=new RSACryptoServiceProvider();
Console.WriteLine(rsa.ToXmlString(false));
Console.WriteLine(rsa.ToXmlString(true));
//获得包含公钥的参数
RSAParameters rsap=rsa.ExportParameters(false);
//获得包含公钥与私钥的参数
RSAParameters rsapp=rsa.ExportParameters(true);

rsa.ImportParameters(rsap);
string message=Console.ReadLine();
byte[] data=Encoding.Default.GetBytes(message);
//用公钥对信息进行加密
byte[] eMessage=rsa.Encrypt(data,false);
Console.WriteLine(Convert.ToBase64String(eMessage));

rsa.ImportParameters(rsapp);
byte[] dMessage=rsa.Decrypt(eMessage,false);
Console.WriteLine(Encoding.Default.GetString(dMessage));

Console.ReadLine();
}
}
}