C#使用DES加密解密DataSet!
1 using System;
2 using System.Data;
3 using System.Data.SqlClient;
4 using System.Security;
5 using System.Security.Cryptography;
6 using System.IO;
7 using System.Xml;
8 namespace DES_Security_Demo
9 {
10 class Class1
11 {
12 [STAThread]
13 static void Main(string[] args)
14 {
15 System.Data.SqlClient.SqlConnection connection=new System.Data.SqlClient.SqlConnection
16 ("Server=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
17 System.Data.SqlClient.SqlDataAdapter myda=new System.Data.SqlClient.SqlDataAdapter
18 ("select * from customers",connection);
19 //加密
20 FileStream fs=new FileStream("DSencrypted.dat",FileMode.Create,
21 FileAccess.Write);
22 DataSet MyDS=new DataSet();
23 DataSet MyDS2=new DataSet();
24 myda.Fill(MyDS,"Customers");
25 DESCryptoServiceProvider DES=new DESCryptoServiceProvider();
26 ICryptoTransform DESencrypter=DES.CreateEncryptor();
27 CryptoStream cryptStream=new CryptoStream(fs,DESencrypter,CryptoStreamMode.Write);
28 MyDS.WriteXml(cryptStream,XmlWriteMode.WriteSchema);
29 cryptStream.Close();
30 //解密
31 FileStream fsRead=new FileStream("DSencrypted.dat",FileMode.Open,FileAccess.Read);
32 ICryptoTransform DESdecrypter=DES.CreateDecryptor();
33 CryptoStream decryptStream=new CryptoStream(fsRead,DESdecrypter,
34 CryptoStreamMode.Read);
35 //两种方式解析DataSet,书上用的第1种,其它直接用第2种也可
36 //1
37 XmlTextReader plainStreamR=new XmlTextReader(decryptStream);
38 MyDS2.ReadXml(plainStreamR,XmlReadMode.ReadSchema);
39 //2
40 // MyDS2.ReadXml(decryptStream,XmlReadMode.ReadSchema);
41 Console.WriteLine("Customers Table SuccessFully Encrypted and Decrypted.");
42 Console.WriteLine("First Customer:");
43 foreach(DataColumn _Column in MyDS2.Tables["Customers"].Columns) {
44 Console.WriteLine("{0}\t",MyDS2.Tables["Customers"].Rows[0][_Column]);
45 }
46 }
47 }
48 }
2 using System.Data;
3 using System.Data.SqlClient;
4 using System.Security;
5 using System.Security.Cryptography;
6 using System.IO;
7 using System.Xml;
8 namespace DES_Security_Demo
9 {
10 class Class1
11 {
12 [STAThread]
13 static void Main(string[] args)
14 {
15 System.Data.SqlClient.SqlConnection connection=new System.Data.SqlClient.SqlConnection
16 ("Server=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
17 System.Data.SqlClient.SqlDataAdapter myda=new System.Data.SqlClient.SqlDataAdapter
18 ("select * from customers",connection);
19 //加密
20 FileStream fs=new FileStream("DSencrypted.dat",FileMode.Create,
21 FileAccess.Write);
22 DataSet MyDS=new DataSet();
23 DataSet MyDS2=new DataSet();
24 myda.Fill(MyDS,"Customers");
25 DESCryptoServiceProvider DES=new DESCryptoServiceProvider();
26 ICryptoTransform DESencrypter=DES.CreateEncryptor();
27 CryptoStream cryptStream=new CryptoStream(fs,DESencrypter,CryptoStreamMode.Write);
28 MyDS.WriteXml(cryptStream,XmlWriteMode.WriteSchema);
29 cryptStream.Close();
30 //解密
31 FileStream fsRead=new FileStream("DSencrypted.dat",FileMode.Open,FileAccess.Read);
32 ICryptoTransform DESdecrypter=DES.CreateDecryptor();
33 CryptoStream decryptStream=new CryptoStream(fsRead,DESdecrypter,
34 CryptoStreamMode.Read);
35 //两种方式解析DataSet,书上用的第1种,其它直接用第2种也可
36 //1
37 XmlTextReader plainStreamR=new XmlTextReader(decryptStream);
38 MyDS2.ReadXml(plainStreamR,XmlReadMode.ReadSchema);
39 //2
40 // MyDS2.ReadXml(decryptStream,XmlReadMode.ReadSchema);
41 Console.WriteLine("Customers Table SuccessFully Encrypted and Decrypted.");
42 Console.WriteLine("First Customer:");
43 foreach(DataColumn _Column in MyDS2.Tables["Customers"].Columns) {
44 Console.WriteLine("{0}\t",MyDS2.Tables["Customers"].Rows[0][_Column]);
45 }
46 }
47 }
48 }
一点说明:为什么在标题中要嵌入英文?原因是为了能够让国外的网友能查询到这篇文章。平常在Google上查资料的时候,经常参考国外网友的博客,帮助我解决了很多问题,所以我也想让他们能够参考我写的内容。当然文中我不可能全部译为英文,所以我尽量把代码粘全,靠代码说话吧。