EncryptDecryptExtension.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.Security.Cryptography;
  3. using System.Text;
  4. using Talk.Extensions;
  5. namespace Host.Common
  6. {
  7. public static class EncryptDecryptExtension
  8. {
  9. //可在配置文件配置自己的DES3Key - 必须16位
  10. private static readonly string des3key = ConfigurationManager.GetTryConfig("DES3Key", "73495773n~@^v&B6");
  11. /// <summary>
  12. /// 加密
  13. /// </summary>
  14. /// <param name="data"></param>
  15. /// <returns></returns>
  16. public static string DES3Encrypt(this string data)
  17. {
  18. byte[] inputArray = Encoding.UTF8.GetBytes(data);
  19. var tripleDES = TripleDES.Create();
  20. var byteKey = Encoding.UTF8.GetBytes(des3key);
  21. byte[] allKey = new byte[24];
  22. Buffer.BlockCopy(byteKey, 0, allKey, 0, 16);
  23. Buffer.BlockCopy(byteKey, 0, allKey, 16, 8);
  24. tripleDES.Key = allKey;
  25. tripleDES.Mode = CipherMode.ECB;
  26. tripleDES.Padding = PaddingMode.PKCS7;
  27. ICryptoTransform cTransform = tripleDES.CreateEncryptor();
  28. byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);
  29. return Convert.ToBase64String(resultArray, 0, resultArray.Length);
  30. }
  31. /// <summary>
  32. /// 解密
  33. /// </summary>
  34. /// <param name="data"></param>
  35. /// <param name="key"></param>
  36. /// <returns></returns>
  37. public static string DES3Decrypt(this string data)
  38. {
  39. byte[] inputArray = Convert.FromBase64String(data);
  40. var tripleDES = TripleDES.Create();
  41. var byteKey = Encoding.UTF8.GetBytes(des3key);
  42. byte[] allKey = new byte[24];
  43. Buffer.BlockCopy(byteKey, 0, allKey, 0, 16);
  44. Buffer.BlockCopy(byteKey, 0, allKey, 16, 8);
  45. tripleDES.Key = allKey;
  46. tripleDES.Mode = CipherMode.ECB;
  47. tripleDES.Padding = PaddingMode.PKCS7;
  48. ICryptoTransform cTransform = tripleDES.CreateDecryptor();
  49. byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);
  50. return Encoding.UTF8.GetString(resultArray);
  51. }
  52. }
  53. }