AESHelper.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Security.Cryptography;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace TEAMModelOS.SDK
  8. {
  9. public class AESHelper
  10. {
  11. /// <summary>
  12. /// 有密码的加密
  13. /// </summary>
  14. /// <param name="toEncrypt">加密字符</param>
  15. /// <param name="key">加密的密码</param>
  16. /// <returns></returns>
  17. public static string AESEncrypt(string toEncrypt, string key)
  18. {
  19. byte[] keyArray = hexStringTobyte(key);
  20. byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
  21. RijndaelManaged rDel = new RijndaelManaged();
  22. rDel.KeySize = 128;
  23. rDel.BlockSize = 128;
  24. rDel.Key = keyArray;
  25. rDel.Mode = CipherMode.ECB;
  26. rDel.Padding = PaddingMode.PKCS7;
  27. ICryptoTransform cTransform = rDel.CreateEncryptor();
  28. byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
  29. return byteToHexString(resultArray);
  30. }
  31. /// <summary>
  32. /// 解密
  33. /// </summary>
  34. /// <param name="toDecrypt">解密字符</param>
  35. /// <param name="key">加密的密码</param>
  36. /// <returns></returns>
  37. public static string AESDecrypt(string toDecrypt, string key)
  38. {
  39. if (string.IsNullOrWhiteSpace(toDecrypt))
  40. {
  41. return "";
  42. }
  43. else {
  44. byte[] keyArray = hexStringTobyte(key);
  45. byte[] dest = hexStringTobyte(toDecrypt);
  46. RijndaelManaged rDel = new();
  47. rDel.KeySize = 128;
  48. rDel.BlockSize = 128;
  49. rDel.Key = keyArray;
  50. rDel.Mode = CipherMode.ECB;
  51. rDel.Padding = PaddingMode.PKCS7;
  52. ICryptoTransform cTransform = rDel.CreateDecryptor();
  53. try
  54. {
  55. byte[] resultArray = cTransform.TransformFinalBlock(dest, 0, dest.Length);
  56. return UTF8Encoding.UTF8.GetString(resultArray);
  57. }
  58. catch (Exception ex)
  59. {
  60. return toDecrypt;
  61. }
  62. }
  63. }
  64. private static byte[] hexStringTobyte(String s)
  65. {
  66. if (string.IsNullOrEmpty(s)) return null;
  67. s = s.ToLower();
  68. int byteArrayLength = s.Length / 2;
  69. byte[] b = new byte[byteArrayLength];
  70. for (int i = 0; i < byteArrayLength; i++)
  71. {
  72. byte b0 = Convert.ToByte(s.Substring(i * 2, 2), 16);
  73. b[i] = b0;
  74. }
  75. return b;
  76. }
  77. public static string byteToHexString(byte[] t)
  78. {
  79. StringBuilder sb = new StringBuilder();
  80. for (int i = 0; i < t.Length; i++)
  81. {
  82. sb.Append(t[i].ToString("x").PadLeft(2, '0'));
  83. }
  84. return sb.ToString().ToUpper();
  85. }
  86. }
  87. }