随笔 - 46,  文章 - 3,  评论 - 23,  阅读 - 28274
        在上次DataSet的加密解密一文发布后,有网友提出采用XML序列化的方式速度较慢,建议用二进制序列化。我觉得很有道理,下面是在VS2005种采用二进制序列化方式结合对称加密算法对DataSet进行加密解密的代码:
 1using System;
 2using System.Collections;
 3using System.Security.Cryptography; 
 4using System.IO ;
 5using System.Data;
 6using System.Runtime.Serialization.Formatters.Binary;
 7namespace zjz.ClsDoCode
 8{
 9    /// <summary>
10    /// ClsEncryption 的摘要说明。
11    /// </summary>

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

20        //密钥
21        //获取或设置对称算法的机密密钥。机密密钥既用于加密,也用于解密。为了保证对称算法的安全,必须只有发送方和接收方知道该机密密钥。有效密钥大小是由特定对称算法实现指定的,密钥大小在 LegalKeySizes 中列出。
22        private static byte[] DESKey = new byte[] {11239310272411812};
23        //获取或设置对称算法的初始化向量
24        private static byte[] DESIV = new byte[] {75158469778571736};
25
26                public static void EncryptDataSetToBinary(DataSet objDataSet, string outFilePath)
27        {
28             DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
29             FileStream fout = new FileStream(outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
30            //用指定的 Key 和初始化向量 (IV) 创建对称数据加密标准 (DES) 加密器对象
31            CryptoStream objCryptoStream = new CryptoStream(fout, objDES.CreateEncryptor(DESKey, DESIV), CryptoStreamMode.Write);
32            //StreamWriter objStreamWriter = new StreamWriter(objCryptoStream);
33            objDataSet.RemotingFormat = SerializationFormat.Binary;
34            BinaryFormatter bf = new BinaryFormatter();
35            bf.Serialize(objCryptoStream, objDataSet);
36            objCryptoStream.Close();
37            fout.Close();
38
39        }

40        public static DataSet DecryptDataSetFromBinary(string inBinFilePath)
41        {
42            DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
43            FileStream fin = new FileStream(inBinFilePath, FileMode.Open, FileAccess.Read);
44            //用指定的 Key 和初始化向量 (IV) 创建对称数据加密标准 (DES) 加密器对象
45            CryptoStream objCryptoStream = new CryptoStream(fin, objDES.CreateDecryptor(DESKey, DESIV), CryptoStreamMode.Read);
46            BinaryFormatter bf = new BinaryFormatter();
47            DataSet ds = (DataSet)bf.Deserialize(objCryptoStream);
48            fin.Close();
49            return ds;
50   }

51    }

52}
posted on   语风  阅读(741)  评论(6编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!

< 2006年9月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
1 2 3 4 5 6 7
点击右上角即可分享
微信分享提示