C# DES

 

  1. using System; 
  2. //這個是使用DES的基礎 
  3. using System.Security.Cryptography; 
  4. //這個是處理文字編碼的前提 
  5. using System.Text; 
  6. //以“流”的形式處理文字,也是微軟DES算法要求的 
  7. using System.IO; 
  8. /// <summary> 
  9. /// DES加密方法 
  10. /// </summary> 
  11. /// <param name="strPlain">明文</param> 
  12. /// <param name="strDESKey">密鑰</param> 
  13. /// <param name="strDESIV">向量</param> 
  14. /// <returns>密文</returns> 
  15. public string DESEncrypt(string strPlain,string strDESKey,string strDESIV) 
  16. //把密鑰轉換成字節數組 
  17. byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey); 
  18. //把向量轉換成字節數組 
  19. byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV); 
  20. //聲明1個新的DES對象 
  21. DESCryptoServiceProvider desEncrypt=new DESCryptoServiceProvider(); 
  22. //開闢一塊內存流 
  23. MemoryStream msEncrypt=new MemoryStream(); 
  24. //把內存流對象包裝成加密流對象 
  25. CryptoStream csEncrypt=new CryptoStream(msEncrypt,desEncrypt.CreateEncryptor(bytesDESKey,bytesDESIV),CryptoStreamMode.Write); 
  26. //把加密流對象包裝成寫入流對象 
  27. StreamWriter swEncrypt=new StreamWriter(csEncrypt); 
  28. //寫入流對象寫入明文 
  29. swEncrypt.WriteLine(strPlain); 
  30. //寫入流關閉 
  31. swEncrypt.Close(); 
  32. //加密流關閉 
  33. csEncrypt.Close(); 
  34. //把內存流轉換成字節數組,內存流現在已經是密文了 
  35. byte[] bytesCipher=msEncrypt.ToArray(); 
  36. //內存流關閉 
  37. msEncrypt.Close(); 
  38. //把密文字節數組轉換爲字符串,並返回 
  39. return UnicodeEncoding.Unicode.GetString(bytesCipher); 
  40. /// <summary> 
  41. /// DES解密方法 
  42. /// </summary> 
  43. /// <param name="strCipher">密文</param> 
  44. /// <param name="strDESKey">密鑰</param> 
  45. /// <param name="strDESIV">向量</param> 
  46. /// <returns>明文</returns> 
  47. public string DESDecrypt(string strCipher,string strDESKey,string strDESIV) 
  48. //把密鑰轉換成字節數組 
  49. byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey); 
  50. //把向量轉換成字節數組 
  51. byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV); 
  52. //把密文轉換成字節數組 
  53. byte[] bytesCipher=UnicodeEncoding.Unicode.GetBytes(strCipher); 
  54. //聲明1個新的DES對象 
  55. DESCryptoServiceProvider desDecrypt=new DESCryptoServiceProvider(); 
  56. //開闢一塊內存流,並存放密文字節數組 
  57. MemoryStream msDecrypt=new MemoryStream(bytesCipher); 
  58. //把內存流對象包裝成解密流對象 
  59. CryptoStream csDecrypt=new CryptoStream(msDecrypt,desDecrypt.CreateDecryptor(bytesDESKey,bytesDESIV),CryptoStreamMode.Read); 
  60. //把解密流對象包裝成讀出流對象 
  61. StreamReader srDecrypt=new StreamReader(csDecrypt); 
  62. //明文=讀出流的讀出內容 
  63. string strPlainText=srDecrypt.ReadLine(); 
  64. //讀出流關閉 
  65. srDecrypt.Close(); 
  66. //解密流關閉 
  67. csDecrypt.Close(); 
  68. //內存流關閉 
  69. msDecrypt.Close(); 
  70. //返回明文 
  71. return strPlainText; 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章