AESHelper.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using IES.ExamServer.Helper;
  2. using System;
  3. using System.Security.Cryptography;
  4. using System.Text;
  5. using System.Text.Json;
  6. namespace IES.ExamServer.Helpers
  7. {
  8. public class AESHelper
  9. {
  10. private static readonly byte[] Key = Encoding.UTF8.GetBytes(Constant._MusicAIServerAESKey);
  11. private static readonly byte[] IV = Encoding.UTF8.GetBytes(Constant._MusicAIServerAESIv);
  12. // 解密方法
  13. public static string Decrypt(string encryptedText)
  14. {
  15. Console.WriteLine("解密前的内容:", encryptedText);
  16. if (string.IsNullOrEmpty(encryptedText))
  17. {
  18. return encryptedText;
  19. }
  20. using (Aes aesAlg = Aes.Create())
  21. {
  22. aesAlg.Key = Key;
  23. aesAlg.IV = IV;
  24. aesAlg.Mode = CipherMode.CBC;
  25. aesAlg.Padding = PaddingMode.PKCS7;
  26. ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
  27. byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
  28. byte[] decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
  29. string decryptedText = Encoding.UTF8.GetString(decryptedBytes);
  30. Console.WriteLine("解密后的内容:", decryptedText);
  31. if (decryptedText.StartsWith("{"))
  32. {
  33. return JsonSerializer.Serialize(JsonSerializer.Deserialize<object>(decryptedText));
  34. }
  35. else
  36. {
  37. return decryptedText;
  38. }
  39. }
  40. }
  41. // 加密方法
  42. public static string Encrypt(string plainText)
  43. {
  44. Console.WriteLine("加密前的内容:", plainText);
  45. if (string.IsNullOrEmpty(plainText))
  46. {
  47. return plainText;
  48. }
  49. using (Aes aesAlg = Aes.Create())
  50. {
  51. aesAlg.Key = Key;
  52. aesAlg.IV = IV;
  53. aesAlg.Mode = CipherMode.CBC;
  54. aesAlg.Padding = PaddingMode.PKCS7;
  55. ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
  56. byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
  57. byte[] encryptedBytes = encryptor.TransformFinalBlock(plainTextBytes, 0, plainTextBytes.Length);
  58. string encryptedText = Convert.ToBase64String(encryptedBytes);
  59. Console.WriteLine("加密后的内容:", encryptedText);
  60. return encryptedText;
  61. }
  62. }
  63. }
  64. }