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