namespace ZhiYi.Core.Application.Shared { public class EncryptProvider { /// /// AES 加密 /// /// Raw data /// Key, requires 32 bits /// Encrypted string public string AESEncrypt(string data, string key) { using MemoryStream memory = new MemoryStream(); using Aes aes = Aes.Create(); byte[] plainBytes = Encoding.UTF8.GetBytes(data); byte[] bKey = new byte[32]; Array.Copy(Encoding.UTF8.GetBytes(key.PadRight(bKey.Length)), bKey, bKey.Length); aes.Mode = CipherMode.ECB; aes.Padding = PaddingMode.PKCS7; aes.KeySize = 256; aes.Key = bKey; using CryptoStream cryptoStream = new CryptoStream(memory, aes.CreateEncryptor(), CryptoStreamMode.Write); try { cryptoStream.Write(plainBytes, 0, plainBytes.Length); cryptoStream.FlushFinalBlock(); return Convert.ToBase64String(memory.ToArray()); } catch { throw; } } /// /// AES 解密 /// /// Encrypted data /// Key, requires 32 bits /// Decrypted string public string AESDecrypt(string data, string key) { byte[] encryptedBytes = Convert.FromBase64String(data); byte[] bKey = new byte[32]; Array.Copy(Encoding.UTF8.GetBytes(key.PadRight(bKey.Length)), bKey, bKey.Length); try { byte[]? decryptedData = null; // decrypted data using MemoryStream memory = new MemoryStream(encryptedBytes); using Aes aes = Aes.Create(); aes.Mode = CipherMode.ECB; aes.Padding = PaddingMode.PKCS7; aes.KeySize = 256; aes.Key = bKey; using CryptoStream decryptor = new CryptoStream(memory, aes.CreateDecryptor(), CryptoStreamMode.Read); using MemoryStream tempMemory = new MemoryStream(); byte[] buffer = new byte[1024]; int readBytes = 0; while ((readBytes = decryptor.Read(buffer, 0, buffer.Length)) > 0) { tempMemory.Write(buffer, 0, readBytes); } decryptedData = tempMemory.ToArray(); return Encoding.UTF8.GetString(decryptedData); } catch { throw; } } } }