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();
}
}
}
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();
}
}
}
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();
}
}
}