DataSet的加密解密

转载 2008年09月28日 15:42:00
 

本文转自:http://www.cnblogs.com/zjzkiss/archive/2006/06/12/423446.html

最近在一个工程中需要对DataSet进行加密,然后以文件形式传输后在另一端解密还原。于是查询了一些资料,发现多是对字符串和文件加密的方法。于是只好自力更生,参考.net的对称加密技术和网上的一些资料,研究出了DataSet的加密方法。
    代码比较简单,附下:

1None.gif  using System;
2None.gif  using System.Collections;
3None.gif  using System.Security.Cryptography;
4None.gif  using System.IO ;
5None.gif  using System.Data;
6None.gif  using System.Xml.Serialization;
7None.gif  namespace zjz.ClsDoCode
8ExpandedBlockStart.gifContractedBlock.gif  dot.gif{
9ExpandedSubBlockStart.gifContractedSubBlock.gif      /**//**//**//// <summary>
10InBlock.gif    /// ClsEncryption 的摘要说明。
11ExpandedSubBlockEnd.gif    /// </summary>

12InBlock.gif     public class ClsEncryption
13ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
14InBlock.gif        public ClsEncryption()
15ExpandedSubBlockStart.gifContractedSubBlock.gif         dot.gif{
16InBlock.gif             //
17InBlock.gif            // TODO: 在此处添加构造函数逻辑
18InBlock.gif             //
19ExpandedSubBlockEnd.gif          }

20InBlock.gif         //密钥
21InBlock.gif        //获取或设置对称算法的机密密钥。机密密钥既用于加密,也用于解密。为了保证对称算法的安全,必须只有发送方和接收方知道该机密密钥。有效密钥大小是由特定对称算法实现指定的,密钥大小在 LegalKeySizes 中列出。
22ExpandedSubBlockStart.gifContractedSubBlock.gif         private static byte[] DESKey = new byte[] dot.gif{11, 23, 93, 102, 72, 41, 18, 12};
23InBlock.gif         //获取或设置对称算法的初始化向量
24ExpandedSubBlockStart.gifContractedSubBlock.gif         private static byte[] DESIV = new byte[] dot.gif{75, 158, 46, 97, 78, 57, 17, 36};
25InBlock.gif
26ExpandedSubBlockStart.gifContractedSubBlock.gif          /**//**//**//// <summary>
27InBlock.gif         /// 加密DataSet
28InBlock.gif        /// </summary>
29InBlock.gif         /// <param name="objDataSet"></param>
30ExpandedSubBlockEnd.gif        /// <param name="outFilePath"></param>

31InBlock.gif        public static void EncryptDataSetToXml(DataSet objDataSet,string outXmlFilePath)
32ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
33InBlock.gif             DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
34InBlock.gif             FileStream fout = new FileStream(outXmlFilePath, FileMode.OpenOrCreate, FileAccess.Write);
35InBlock.gif            //用指定的 Key 和初始化向量 (IV) 创建对称数据加密标准 (DES) 加密器对象
36InBlock.gif             CryptoStream objCryptoStream = new CryptoStream(fout, objDES.CreateEncryptor(DESKey, DESIV), CryptoStreamMode.Write);
37InBlock.gif             StreamWriter objStreamWriter = new StreamWriter(objCryptoStream);
38InBlock.gif             XmlSerializer objXmlSer = new XmlSerializer(typeof(DataSet));
39InBlock.gif             objXmlSer.Serialize(objStreamWriter, objDataSet);
40InBlock.gif             objStreamWriter.Close();
41InBlock.gif
42ExpandedSubBlockEnd.gif         }

43InBlock.gif        public static DataSet DecryptDataSetFromXml(string inXmlFilePath)
44ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
45InBlock.gif             DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
46InBlock.gif             FileStream fin = new FileStream(inXmlFilePath, FileMode.Open , FileAccess.Read );
47InBlock.gif            //用指定的 Key 和初始化向量 (IV) 创建对称数据加密标准 (DES) 加密器对象
48InBlock.gif            CryptoStream objCryptoStream = new CryptoStream(fin, objDES.CreateDecryptor(DESKey, DESIV), CryptoStreamMode.Read);
49InBlock.gif             TextReader objTxrReader = new StreamReader(objCryptoStream);
50InBlock.gif             XmlSerializer objXmlSer = new XmlSerializer(typeof(DataSet));
51InBlock.gif             DataSet ds = (DataSet)objXmlSer.Deserialize(objTxrReader);
52InBlock.gif            return ds;
53ExpandedSubBlockEnd.gif         }

54ExpandedSubBlockEnd.gif     }

55ExpandedBlockEnd.gif}

56None.gif
        小结:关于对称加密算法,大家可以参考微软的资料和网上的资料,这里就不多做解释了。下面是源代码文件,里面还包含有字符串和文件加密的方法,当然那些是别人的代码。
/Files/zjzkiss/ClsDoCode.rar

如何加密解密DataSet数据集

  private static byte[] desKey = new byte[] { 11,23,93,102,72,41,18,12};        private static byte[...
  • dz45693
  • dz45693
  • 2009年11月14日 01:46
  • 2260

C#使用DES加密解密DataSet!

using System;using System.Data;using System.Data.SqlClient;using System.Security;using System.Securi...
  • wumylove1234
  • wumylove1234
  • 2006年07月23日 15:23
  • 996

DOM对象的dataset属性

HTML5规定DOM对象中有个dataset属性对象,可以在该对象中存一些与该DOM对象相关的数据。如上写法是在生成dom对象时对dataset的一个初始化的动作,dataset中会存在一个id属性和...
  • tt361
  • tt361
  • 2013年12月11日 20:54
  • 2242

Spark的RDD与DataFrame、DataSet

理解:RDD并不是被DataFrame和DataSet取代,他们应用的场景的不同的。   Apache Spark 2.0统一API的主要动机是:追求简化Spark。通过减少用户学习的概念和提供结...
  • jd7082210
  • jd7082210
  • 2016年08月12日 21:17
  • 760

格式化DataSet里的日期类型

1.public static DataTable dataSetDateFormat(DataTable dt,string format)  {   string tempStr = "";   ...
  • hufengwen
  • hufengwen
  • 2006年11月01日 15:49
  • 951

dataSet用法

MSDN:DataList Web 服务器控件以某种格式显示数据,这种格式可以使用模板和样式进行定义。DataList 控件可用于任何重复结构中的数据,如表。DataList 控件可以以不同的布局显示...
  • Mercop
  • Mercop
  • 2012年09月05日 23:41
  • 2345

类型化(Type)的DataSet (使用强类型的DataSet。定义的数据库表一定要有主键,否则不能使用)

using System; using System.Collections.Generic; using System.Linq; using System.Text; using 可空类型.Dat...
  • Fanbin168
  • Fanbin168
  • 2013年09月03日 23:57
  • 1156

FusionCharts封装-dataset和categories

Chart.java: /** * @Title:Chart.java * @Package:com.fusionchart.model * @Description:FusionCh...
  • you23hai45
  • you23hai45
  • 2014年01月22日 22:16
  • 1596

DataSet读取数据用法

动软用的是DataSet我一般用的List 备忘!      BLL.CarSun cs = new Maticsoft.BLL.CarSun();          DataSet ds = new...
  • carlfan
  • carlfan
  • 2010年02月11日 13:44
  • 1181

DataSet 取值,DataSet行数,DataSet列数 从DataSet中取出特定值

1 DataSet.Table[0].Rows[ i ][ j ]        其中i 代表第 i 行数, j 代表第 j 列数  2 DataSet.Table[0].Rows[ i ].Item...
  • rxopt
  • rxopt
  • 2008年12月11日 21:11
  • 20277
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DataSet的加密解密
举报原因:
原因补充:

(最多只允许输入30个字)