AES.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using System.Security.Cryptography;
  3. using System.Text;
  4. namespace CB.TVUCenter.Encrypt
  5. {
  6. public class AES
  7. {
  8. /// <summary>
  9. /// AES加密
  10. /// </summary>
  11. /// <param name="toEncrypt">加密字符串</param>
  12. /// <param name="key">密钥</param>
  13. /// <returns></returns>
  14. public static string Encrypt(string toEncrypt, string key)
  15. {
  16. byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
  17. byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
  18. RijndaelManaged rDel = new RijndaelManaged();
  19. rDel.Key = keyArray;
  20. rDel.Mode = CipherMode.ECB;
  21. rDel.Padding = PaddingMode.PKCS7;
  22. ICryptoTransform cTransform = rDel.CreateEncryptor();
  23. byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
  24. return Convert.ToBase64String(resultArray, 0, resultArray.Length);
  25. }
  26. /// <summary>
  27. /// AES解密
  28. /// </summary>
  29. /// <param name="toDecrypt">解密密文</param>
  30. /// <param name="key">密钥</param>
  31. /// <returns></returns>
  32. public static string Decrypt(string toDecrypt, string key)
  33. {
  34. byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
  35. byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
  36. RijndaelManaged rDel = new RijndaelManaged();
  37. rDel.Key = keyArray;
  38. rDel.Mode = CipherMode.ECB;
  39. rDel.Padding = PaddingMode.PKCS7;
  40. ICryptoTransform cTransform = rDel.CreateDecryptor();
  41. byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
  42. return UTF8Encoding.UTF8.GetString(resultArray);
  43. }
  44. /// <summary>
  45. /// 随机生成16位AESkey
  46. /// </summary>
  47. /// <returns></returns>
  48. public static string GenerateAESKey(int length)
  49. {
  50. string str = string.Empty;
  51. Random rnd1 = new Random();
  52. int r = rnd1.Next(10, 100);
  53. long num2 = DateTime.Now.Ticks + r;
  54. Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> r)));
  55. for (int i = 0; i < length; i++)
  56. {
  57. char ch;
  58. int num = random.Next();
  59. if ((num % 2) == 0)
  60. {
  61. ch = (char)(0x30 + ((ushort)(num % 10)));
  62. }
  63. else
  64. {
  65. ch = (char)(0x41 + ((ushort)(num % 0x1a)));
  66. }
  67. str = str + ch.ToString();
  68. }
  69. return str;
  70. }
  71. }
  72. }