public partial class _429 : System.Web.UI.Page
{
//获取或设置对称算法的机密密钥。机密密钥既用于加密,也用于解密。为了保证对称算法的安全,
//必须只有发送方和接收方知道该机密密钥。有效密钥大小是由特定对称算法实现,密钥大小在 LegalKeySizes 中列出。
private static byte[] DESKey = new byte[] {11,23,93,102,72,41,18,43};
//获取或设置对称算法的初始化向量
private static byte[] DESSIV = new byte[] {75,158,46,97,78,57,17,66};
protected void Page_Load(object sender, EventArgs e)
{
}
//加密
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"server=./hxh;database=db_18;uid=sa;pwd=hxhlxf;");
SqlDataAdapter da = new SqlDataAdapter("select * from 员工工资表", conn);
DataSet ds = new DataSet();
da.Fill(ds);
//调用实现加密的EncryptDataSetToXML(DataSet ds,string outXMLFilePath)方法
EncryptDataSetToXML(ds, Server.MapPath("~/429_DataSet.xml"));
GridView1.DataSource = ds;
GridView1.DataBind();
}
//实现加密锁
public static void EncryptDataSetToXML(DataSet ds, string outXMLFilePath)
{
DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
FileStream fout = new FileStream(outXMLFilePath, FileMode.OpenOrCreate, FileAccess.Write);
//用指定的 Key 和初始化向量 (IV) 创建对称数据加密标准 (DES) 加密器对象
CryptoStream objCryptoStream = new CryptoStream(fout, objDES.CreateEncryptor(DESKey, DESSIV), CryptoStreamMode.Write);
StreamWriter objStreamWriter = new StreamWriter(objCryptoStream);
XmlSerializer objXMLSer = new XmlSerializer(typeof(DataSet));
objXMLSer.Serialize(objStreamWriter, ds);
objStreamWriter.Close();
}
//实现对 DataSet 的解密
public static DataSet DecryptDataSetFromXML(string inXMLPath)
{
DESCryptoServiceProvider objDES=new DESCryptoServiceProvider();
FileStream fin=new FileStream(inXMLPath,FileMode.Open,FileAccess.Read);
//用指定的 Key 和初始化向量 (IV) 创建对称数据加密标准 (DES) 解密器对象
CryptoStream objCryptoStream=new CryptoStream(fin,objDES.CreateDecryptor(DESKey,DESSIV),CryptoStreamMode.Read);
TextReader objTxrRead=new StreamReader(objCryptoStream);
XmlSerializer objXMLSer=new XmlSerializer(typeof(DataSet));
DataSet ds= (DataSet)objXMLSer.Deserialize(objTxrRead);
return ds;
}
//解密按钮
protected void Button2_Click(object sender, EventArgs e)
{
GridView1.DataSource = DecryptDataSetFromXML(Server.MapPath("~/429_DataSet.xml"));
GridView1.DataBind();
}
}
要导入的命名空间为:
using System.Security.Cryptography;
using System.IO;
using System.Xml.Serialization;
using System.Xml;