using System.Security.Cryptography; namespace SPMS.Infrastructure.Security; public static class AesEncryption { public static byte[] Encrypt(byte[] plaintext, byte[] key, byte[] iv) { using var aes = Aes.Create(); aes.Key = key; aes.IV = iv; aes.Mode = CipherMode.CBC; aes.Padding = PaddingMode.PKCS7; using var encryptor = aes.CreateEncryptor(); return encryptor.TransformFinalBlock(plaintext, 0, plaintext.Length); } public static byte[] Decrypt(byte[] ciphertext, byte[] key, byte[] iv) { using var aes = Aes.Create(); aes.Key = key; aes.IV = iv; aes.Mode = CipherMode.CBC; aes.Padding = PaddingMode.PKCS7; using var decryptor = aes.CreateDecryptor(); return decryptor.TransformFinalBlock(ciphertext, 0, ciphertext.Length); } public static byte[] GenerateKey() { var key = new byte[32]; RandomNumberGenerator.Fill(key); return key; } public static byte[] GenerateIv() { var iv = new byte[16]; RandomNumberGenerator.Fill(iv); return iv; } }