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 都不一样,怎么办?

解决方案 »

  1.   

    ToXmlString(true)把私钥也导出来
      

  2.   

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

  3.   

    ******************************************************************************试过了,不管用,而且我只加密不解密,不需要私钥的******************************************************************************* 我用的是 .net framework 2.0, 是2.0有问题,还是用法不对?
      

  4.   

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