DES数据加密采用对称加密,进行加密,在c#中封装了对应的算法类DESCryptoServiceProvider。

DESCryptoServiceProvider:定义访问数据加密标准 (DES) 算法的加密服务提供程序 (CSP) 版本的包装对象。无法继承此类。

命名空间:System.Security.Cryptography
程序集:mscorlib(在 mscorlib.dll 中)

  1  /// <summary>
  2     /// 数据加密 采用DES[数据对称加密]进行数据加密
  3     /// </summary>
  4     public sealed class MyEncrpt
  5     {
  6         static byte[] Keys;
  7 
  8         /// <summary>
  9         /// 构造函数
 10         /// </summary>
 11         static MyEncrpt()
 12         {
 13             string str="hedongsong123456";
 14             Keys = Encoding.UTF8.GetBytes(str.Substring(0, 8));
 15         }
 16         /// <summary>
 17         /// 对字符串进行加密
 18         /// </summary>
 19         /// <param name="sourceString"></param>
 20         /// <param name="key"></param>
 21         /// <returns></returns>
 22         public static string Encrypt(string sourceString, string key)
 23         {
 24             byte[] btKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
 25             byte[] btIv = Keys;
 26             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
 27             using (MemoryStream ms = new MemoryStream())
 28             {
 29                 byte[] inData = Encoding.UTF8.GetBytes(sourceString);
 30                 try
 31                 {
 32                     using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIv), CryptoStreamMode.Write))
 33                     {
 34                         cs.Write(inData, 0, inData.Length);
 35                         cs.FlushFinalBlock();
 36                     }
 37                     return Convert.ToBase64String(ms.ToArray());
 38                 }
 39                 catch (Exception e)
 40                 {
 41                     throw e;
 42                 }
 43             }
 44         }
 45 
 46         /// <summary>
 47         /// 对文件进行加密
 48         /// </summary>
 49         /// <param name="sourceFile"></param>
 50         /// <param name="encryptedFile"></param>
 51         /// <param name="key"></param>
 52         public static void Encrypt(string sourceFile,string encryptedFile,string key)
 53         {
 54             byte[] btKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
 55             byte[] btIv = Keys;
 56             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
 57             FileStream soufs = new FileStream(sourceFile, FileMode.Open, FileAccess.Read);
 58             FileStream encfs = new FileStream(encryptedFile,FileMode.Create,FileAccess.Write);
 59             byte[] btSou=new byte[soufs.Length];
 60             soufs.Read(btSou,0,btSou.Length);
 61             using(CryptoStream cs=new CryptoStream(encfs,des.CreateEncryptor(btKey,btIv),CryptoStreamMode.Write))
 62             {
 63                 cs.Write(btSou, 0, btSou.Length);
 64                 cs.FlushFinalBlock();
 65             }
 66             soufs.Close();
 67             soufs.Dispose();
 68             encfs.Close();
 69             encfs.Dispose();
 70         }
 71         
 72         /// <summary>
 73         /// 对字符串进行解密
 74         /// </summary>
 75         /// <param name="encryptedString"></param>
 76         /// <param name="key"></param>
 77         /// <returns></returns>
 78         public static string Decrypt(string encryptedString, string key)
 79         {
 80             byte[] btKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
 81             byte[] btIv = Keys;
 82             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
 83             using (MemoryStream ms = new MemoryStream())
 84             {
 85                 byte[] inData = Convert.FromBase64String(encryptedString);
 86                 try
 87                 {
 88                     using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIv), CryptoStreamMode.Write))
 89                     {
 90                         cs.Write(inData, 0, inData.Length);
 91                         cs.FlushFinalBlock();
 92                     }
 93                     System.Text.Encoding encoding = new System.Text.UTF8Encoding();
 94                     return encoding.GetString(ms.ToArray());
 95                 }
 96                 catch (Exception e)
 97                 {
 98                     throw e;
 99                 }
100             }
101         }
102 
103         /// <summary>
104         /// 对文件进行解密
105         /// </summary>
106         /// <param name="sourceFile"></param>
107         /// <param name="encryptedFile"></param>
108         /// <param name="key"></param>
109         public static void Decrypt(string sourceFile, string encryptedFile, string key)
110         {
111             byte[] btKey = Encoding.UTF8.GetBytes(key.Substring(0, 8));
112             byte[] btIv = Keys;
113             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
114             FileStream soufs = new FileStream(sourceFile, FileMode.Open, FileAccess.Read);
115             FileStream encfs = new FileStream(encryptedFile, FileMode.Create, FileAccess.Write);
116             byte[] btSou = new byte[soufs.Length];
117             soufs.Read(btSou, 0, btSou.Length);
118             using (CryptoStream cs = new CryptoStream(encfs, des.CreateDecryptor(btKey, btIv), CryptoStreamMode.Write))
119             {
120                 cs.Write(btSou, 0, btSou.Length);
121                 cs.FlushFinalBlock();
122             }
123             soufs.Close();
124             soufs.Dispose();
125             encfs.Close();
126             encfs.Dispose();
127         }
128     }
View Code

DES采用密匙和对称向量进行加密和解密

业务使用情况:用于对敏感数据进行加密,防止数据泄密。

MSDN