AesEncryption.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System;
  2. using System.IO;
  3. using System.Security.Cryptography;
  4. using System.Text;
  5. namespace GFGGame
  6. {
  7. public static class AesEncryption
  8. {
  9. // !!!重要警告!!!
  10. // 硬编码在客户端的密钥并不安全,容易被反编译获取。
  11. // 这只能防止简单的窥探,无法抵御专业黑客。
  12. // 对于极度敏感的信息,请考虑其他方案(如服务端令牌验证)。
  13. private static readonly string Key = "45418100000000000000000000000000"; // 必须恰好是32字节
  14. private static readonly string IV = "1234567890123456"; // 必须恰好是16字节
  15. public static string Encrypt(string plainText)
  16. {
  17. using (Aes aesAlg = Aes.Create())
  18. {
  19. aesAlg.Key = Encoding.UTF8.GetBytes(Key);
  20. aesAlg.IV = Encoding.UTF8.GetBytes(IV);
  21. ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
  22. using (MemoryStream msEncrypt = new MemoryStream())
  23. {
  24. using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
  25. {
  26. using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
  27. {
  28. swEncrypt.Write(plainText);
  29. }
  30. }
  31. return Convert.ToBase64String(msEncrypt.ToArray());
  32. }
  33. }
  34. }
  35. public static string Decrypt(string cipherText)
  36. {
  37. try
  38. {
  39. byte[] buffer = Convert.FromBase64String(cipherText);
  40. using (Aes aesAlg = Aes.Create())
  41. {
  42. aesAlg.Key = Encoding.UTF8.GetBytes(Key);
  43. aesAlg.IV = Encoding.UTF8.GetBytes(IV);
  44. ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
  45. using (MemoryStream msDecrypt = new MemoryStream(buffer))
  46. {
  47. using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
  48. {
  49. using (StreamReader srDecrypt = new StreamReader(csDecrypt))
  50. {
  51. return srDecrypt.ReadToEnd();
  52. }
  53. }
  54. }
  55. }
  56. }
  57. catch
  58. {
  59. // 解密失败(可能数据被篡改或密钥错误)
  60. return null;
  61. }
  62. }
  63. }
  64. }