using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Web; namespace Neo.Legitimate.NLTISWebService.Data { public class CryptoProvider { public static byte[] Decrypt(byte[] key, byte[] iv, byte[] encryptedData) { SymmetricAlgorithm csp = new RijndaelManaged(); ICryptoTransform decryptor = csp.CreateDecryptor(key, iv); byte[] result; using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Write)) { cs.Write(encryptedData, 0, encryptedData.Length); cs.FlushFinalBlock(); byte[] data = ms.ToArray(); cs.Clear(); result = data; } } return result; } public static string Decrypt(string key, string iv, string cipher) { byte[] keyBuffer = Convert.FromBase64String(key); byte[] ivBuffer = Convert.FromBase64String(iv); byte[] encryptedData = Convert.FromBase64String(cipher); byte[] decryptedData = CryptoProvider.Decrypt(keyBuffer, ivBuffer, encryptedData); return (decryptedData == null) ? null : Encoding.UTF8.GetString(decryptedData); } public static byte[] Encrypt(byte[] key, byte[] iv, byte[] data) { SymmetricAlgorithm csp = new RijndaelManaged(); ICryptoTransform encryptor = csp.CreateEncryptor(key, iv); byte[] result; using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { cs.Write(data, 0, data.Length); cs.FlushFinalBlock(); byte[] encryptedData = ms.ToArray(); cs.Clear(); result = encryptedData; } } return result; } public static string Encrypt(string key, string iv, string plainText) { byte[] keyBuffer = Convert.FromBase64String(key); byte[] ivBuffer = Convert.FromBase64String(iv); byte[] data = Encoding.UTF8.GetBytes(plainText); byte[] encryptedData = CryptoProvider.Encrypt(keyBuffer, ivBuffer, data); return Convert.ToBase64String(encryptedData); } } }