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

其结果如下图所示:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM