BinaryFormatter bf=new BinaryFormatter();
RSAParameters rp=rsa.ExportParameters(true);//把RSA的密钥保存到对象rp
bf.Serialize(ms,rp);//把rp序列化到ms
ms.Position=0; byte[] key=ms.ToArray();//把流保存到byte数组
//Console.WriteLine(key.Length.ToString()); RSAParameters rp2=(RSAParameters)bf.Deserialize(new MemoryStream(key,0,key.Length,true,false));//新建一个memorystream,并且反序列化到对象rp2
错误就是rp2不正确。

解决方案 »

  1.   

    上面的程序有一点乱,下面整理一下再贴一次:
    下面的程序段是序列化一个对象,然后再反序列化得到原来的对象。但是不知道为什么反序列化不正确BinaryFormatter bf=new BinaryFormatter();
    RSAParameters rp=rsa.ExportParameters(true);//把RSA的密钥保存到对象rp
    bf.Serialize(ms,rp);//把rp序列化到ms
    ms.Position=0;byte[] key=ms.ToArray();//把流保存到byte数组
    RSAParameters rp2=(RSAParameters)bf.Deserialize(new MemoryStream       (key,0,key.Length,true,false));//新建一个memorystream,并且反序列化到对象rp2结果是rp2的大多数成员都没有得到序列化,(RSAParameters 的成员类型基本上是byte[],但是反序列化之后他们的值却还是null)
      

  2.   

    上面忘了贴这一句:
    MemoryStream ms=new MemoryStream(1024);
      

  3.   

    算了,用xml序列化算了!那个好像没有问题