| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using System;
- using System.IO;
- using System.Security.Cryptography;
- using System.Text;
- namespace GFGGame
- {
- public static class AesEncryption
- {
- // !!!重要警告!!!
- // 硬编码在客户端的密钥并不安全,容易被反编译获取。
- // 这只能防止简单的窥探,无法抵御专业黑客。
- // 对于极度敏感的信息,请考虑其他方案(如服务端令牌验证)。
- private static readonly string Key = "45418100000000000000000000000000"; // 必须恰好是32字节
- private static readonly string IV = "1234567890123456"; // 必须恰好是16字节
- public static string Encrypt(string plainText)
- {
- using (Aes aesAlg = Aes.Create())
- {
- aesAlg.Key = Encoding.UTF8.GetBytes(Key);
- aesAlg.IV = Encoding.UTF8.GetBytes(IV);
- ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
- using (MemoryStream msEncrypt = new MemoryStream())
- {
- using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
- {
- using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
- {
- swEncrypt.Write(plainText);
- }
- }
- return Convert.ToBase64String(msEncrypt.ToArray());
- }
- }
- }
- public static string Decrypt(string cipherText)
- {
- try
- {
- byte[] buffer = Convert.FromBase64String(cipherText);
- using (Aes aesAlg = Aes.Create())
- {
- aesAlg.Key = Encoding.UTF8.GetBytes(Key);
- aesAlg.IV = Encoding.UTF8.GetBytes(IV);
- ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
- using (MemoryStream msDecrypt = new MemoryStream(buffer))
- {
- using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
- {
- using (StreamReader srDecrypt = new StreamReader(csDecrypt))
- {
- return srDecrypt.ReadToEnd();
- }
- }
- }
- }
- }
- catch
- {
- // 解密失败(可能数据被篡改或密钥错误)
- return null;
- }
- }
- }
- }
|