一切福田,不離方寸,從心而覓,感無不通。

序列化、加密、解密、反序列化

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization.Formatters.Soap;
using System.Xml.Serialization;
using HP.Common;

namespace HP.UI.Web
{
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

//原始对象
var obj = new Person
{
Sno = "200719",
Name = "yuananyun",
Sex="man",
Age=22
};

Response.Write("原始信息:" + obj.DisplayInfo() + "<br /><br />");

//序列化
IFormatter formatter = new BinaryFormatter(); //二进制
//IFormatter formatter = new SoapFormatter(); //SOAP
//var formatter = new XmlSerializer(typeof(Person)); //XML

var stream = new MemoryStream();
formatter.Serialize(stream, obj);

var bs = stream.ToArray();
var s = System.Text.Encoding.Default.GetString(bs);
stream.Close();

Response.Write("序列化:" + s + "<br /><br />");
//加密
var s2 = Security.EnRijndael(s);
Response.Write("序列化+加密:" + s2 + "<br /><br />");

//解密
var s3 = Security.DeRijndael(s2);
Response.Write("解密:" + s3 + "<br /><br />");

//反序列化
var bs2 = System.Text.Encoding.Default.GetBytes(s3);
var destream = new MemoryStream(bs2);
var obj2 = (Person)formatter.Deserialize(destream);
destream.Close();

Response.Write("解密+反序列化:" + obj2.DisplayInfo() + "<br /><br />");
}
}

[Serializable]
public class Person
{
public string Sno { get; set; }
public string Name { get; set; }
public string Sex { get; set; }
public int Age { get; set; }

public string DisplayInfo()
{
return "我的学号是:" + Sno + "\n我的名字是:" + Name + "\n我的性别为:" + Sex + "\n我的年龄:" + Age + "\n";
}
}
}