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;