using System; using System.Security.Cryptography; using System.Text; namespace IRaCIS.Core.Infrastructure { public class SymmetricEncryption { public static string Encrypt(string plainText, string key) { byte[] keyBytes = Encoding.UTF8.GetBytes(key); byte[] ivBytes = new byte[16]; // Initialization vector (IV) using (Aes aes = Aes.Create()) { aes.Key = keyBytes; aes.IV = ivBytes; ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV); byte[] plainBytes = Encoding.UTF8.GetBytes(plainText); byte[] encryptedBytes = encryptor.TransformFinalBlock(plainBytes, 0, plainBytes.Length); return Convert.ToBase64String(encryptedBytes); } } public static string Decrypt(string cipherText, string key) { byte[] keyBytes = Encoding.UTF8.GetBytes(key); byte[] ivBytes = new byte[16]; // Initialization vector (IV) using (Aes aes = Aes.Create()) { aes.Key = keyBytes; aes.IV = ivBytes; ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); byte[] cipherBytes = Convert.FromBase64String(cipherText); byte[] decryptedBytes = decryptor.TransformFinalBlock(cipherBytes, 0, cipherBytes.Length); return Encoding.UTF8.GetString(decryptedBytes); } } } }