• DataSet的加密解密(续)


            在上次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}
  • 相关阅读:
    Emacs教程
    华为上机测试 2015
    奇偶排序
    C语言中的EOF和回车不一样
    jquery 使用方法
    1116
    1115
    1109
    Oracle14~23
    get与post的区别
  • 原文地址:https://www.cnblogs.com/zjzkiss/p/493957.html
Copyright © 2020-2023  润新知