C#实现DES加密解密

首先开一个控制台,然后封装DES加密的代码

 1         /// <summary>
 2         /// 将字符串进行DES加密
 3         /// </summary>
 4         /// <param name="encryString">准备要加密的字符串</param>
 5         /// <param name="encryKey">加密字符串时的密钥</param>
 6         /// <returns>返回一个加密后的字符串,若失败则返回原字符串</returns>
 7         public static string strEncryEDS(string encryString,string encryKey)
 8         {
 9             try
10             {
11                 byte[] rgbKey = Encoding.UTF8.GetBytes(encryKey.Substring(0, 8));
12                 byte[] rgbIV = Encoding.UTF8.GetBytes(encryKey.Substring(0, 8));
13                 byte[] inputByteArry = Encoding.UTF8.GetBytes(encryString);
14                 DESCryptoServiceProvider des = new DESCryptoServiceProvider();
15                 MemoryStream ms = new MemoryStream();
16                 CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(rgbKey, rgbIV)
17                     , CryptoStreamMode.Write);
18                 cs.Write(inputByteArry, 0, inputByteArry.Length);
19                 cs.FlushFinalBlock();
20                 return Convert.ToBase64String(ms.ToArray());
21             }
22             catch (Exception)
23             {
24 
25                 return encryString;
26             }
27         }

对已经加密的字符串进行解密

 1         /// <summary>
 2         /// DES解密
 3         /// </summary>
 4         /// <param name="pToDecrypt">加密后的字符串</param>
 5         /// <param name="key">加密时的密钥</param>
 6         /// <returns>返回一个解密后的字符串,若失败则返回原字符串并给出错误信息</returns>
 7         public static string DESDecrtpt(string pToDecrypt,string key)
 8         {
 9             try
10             {
11                 byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
12                 DESCryptoServiceProvider desc = new DESCryptoServiceProvider();
13                 MemoryStream ms = new MemoryStream();
14                 desc.Key = Encoding.UTF8.GetBytes(key);
15                 desc.IV = Encoding.UTF8.GetBytes(key);
16                 CryptoStream cs = new CryptoStream(ms, desc.CreateDecryptor(), CryptoStreamMode.Write);
17                 cs.Write(inputByteArray, 0, inputByteArray.Length);
18                 cs.FlushFinalBlock();
19                 return Encoding.UTF8.GetString(ms.ToArray());
20             }
21             catch (Exception ex)
22             {
23 
24                 return pToDecrypt+ex.Message;
25             }

在Main方法中进行测试,可随便写一个8位的字符串作为密钥,这里的密钥为12345678

static void Main(string[] args)
        {
            string result = strEncryEDS("如何提供加密算法", "12345678");
            Console.WriteLine("加密"+result);
            string rr = DESDecrtpt(result, "12345678");
            Console.WriteLine("解密" + rr);
            Console.Read();
        }

其结果如下图所示:

 

posted @ 2020-04-26 14:16  默緣心  阅读(1453)  评论(0编辑  收藏  举报