• 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();
            }

    其结果如下图所示:

  • 相关阅读:
    有一个双重模板化的错误实现
    非类型模板参数
    C++模板
    初始化列表initializer_list
    C++类型转换
    const引用和constexpr
    逆元
    卡特兰数
    最短路问题
    Android打印机效果的闪屏
  • 原文地址:https://www.cnblogs.com/MOMOCJN/p/12779210.html
Copyright © 2020-2023  润新知