/csol-logintool/PwcTool/MyDes.cs

https://github.com/bulue/CSOL--- · C# · 68 lines · 53 code · 2 blank · 13 comment · 0 complexity · c45af74fbaa89212364d1adafb4b3573 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Security.Cryptography;
  6. using System.IO;
  7. namespace PwcTool
  8. {
  9. public class MyDes
  10. {
  11. /// <summary>
  12. /// DES加密方法
  13. /// </summary>
  14. /// <param name="strPlain">明文</param>
  15. /// <param name="strDESKey">密钥</param>
  16. /// <param name="strDESIV">向量</param>
  17. /// <returns>密文</returns>
  18. public static string Encode(string source, string _DESKey)
  19. {
  20. StringBuilder sb = new StringBuilder();
  21. using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
  22. {
  23. byte[] key = ASCIIEncoding.ASCII.GetBytes(_DESKey);
  24. byte[] iv = ASCIIEncoding.ASCII.GetBytes(_DESKey);
  25. byte[] dataByteArray = Encoding.UTF8.GetBytes(source);
  26. des.Mode = System.Security.Cryptography.CipherMode.CBC;
  27. des.Key = key;
  28. des.IV = iv;
  29. string encrypt = "";
  30. using (MemoryStream ms = new MemoryStream())
  31. using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
  32. {
  33. cs.Write(dataByteArray, 0, dataByteArray.Length);
  34. cs.FlushFinalBlock();
  35. encrypt = Convert.ToBase64String(ms.ToArray());
  36. }
  37. return encrypt;
  38. }
  39. }
  40. /// <summary>
  41. /// 进行DES解密。
  42. /// </summary>
  43. /// <param name="pToDecrypt">要解密的base64串</param>
  44. /// <param name="sKey">密钥,且必须为8位。</param>
  45. /// <returns>已解密的字符串。</returns>
  46. public static string Decode(string source, string sKey)
  47. {
  48. byte[] inputByteArray = System.Convert.FromBase64String(source);//Encoding.UTF8.GetBytes(source);
  49. using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
  50. {
  51. des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
  52. des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
  53. System.IO.MemoryStream ms = new System.IO.MemoryStream();
  54. using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
  55. {
  56. cs.Write(inputByteArray, 0, inputByteArray.Length);
  57. cs.FlushFinalBlock();
  58. cs.Close();
  59. }
  60. string str = Encoding.UTF8.GetString(ms.ToArray());
  61. ms.Close();
  62. return str;
  63. }
  64. }
  65. }
  66. }