CryptUtil.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System.Text;
  2. using System.Security.Cryptography;
  3. namespace Common
  4. {
  5. public class CryptHelper
  6. {
  7. /// <summary>
  8. /// aes加密
  9. /// </summary>
  10. /// <param name="str">加密字符串</param>
  11. /// <param name="key">密钥</param>
  12. /// <param name="iv">向量</param>
  13. /// <param name="mode">加密模式</param>
  14. /// <param name="padding">填充模式</param>
  15. /// <returns>加密后字符串</returns>
  16. public static string AesEncrypt(string str, string key, string iv, string mode = "CBC", string padding = "PKCS7")
  17. {
  18. if (string.IsNullOrEmpty(str)) return null;
  19. Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
  20. CipherMode cipherMode = CipherMode.CBC;
  21. PaddingMode paddingMode = PaddingMode.PKCS7;
  22. if(mode == "CBC") cipherMode = CipherMode.CBC;
  23. if(mode == "ECB") cipherMode = CipherMode.ECB;
  24. if(mode == "CFB") cipherMode = CipherMode.CFB;
  25. if(mode == "CTS") cipherMode = CipherMode.CTS;
  26. if(padding == "PKCS7") paddingMode = PaddingMode.PKCS7;
  27. if(padding == "None") paddingMode = PaddingMode.None;
  28. if(padding == "Zeros") paddingMode = PaddingMode.Zeros;
  29. if(padding == "ISO10126") paddingMode = PaddingMode.ISO10126;
  30. if(padding == "ANSIX923") paddingMode = PaddingMode.ANSIX923;
  31. System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
  32. {
  33. Key = Encoding.UTF8.GetBytes(key),
  34. IV = Encoding.UTF8.GetBytes(iv),
  35. Mode = cipherMode,
  36. Padding = paddingMode
  37. };
  38. System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateEncryptor();
  39. Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
  40. string jsonData = Convert.ToBase64String(resultArray, 0, resultArray.Length);
  41. return Convert.ToBase64String(Encoding.UTF8.GetBytes(jsonData));
  42. }
  43. }
  44. }