• DES数据加密与文件加密Template


    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

  • 相关阅读:
    20180530
    vue路由配置出错,导致页面跳转会有闪屏问题
    20180528
    vuecli+ivew项目搭建
    centos6安装mysql
    华为云服务ESC
    centos6安装nginx
    国产操作系统aarch64编译filebeat
    Python常见问题
    Git
  • 原文地址:https://www.cnblogs.com/hedongsong/p/4539900.html
Copyright © 2020-2023  润新知