using System.Security.Cryptography;
static public string EncodeTo64(string toEncode)
= System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode);
= System.Convert.ToBase64String(toEncodeAsBytes);
public static string Encrypt(string data, string key, string iv)
var bytes = Encoding.UTF8.GetBytes(data);
var provider = new AesCryptoServiceProvider();
provider.Mode = CipherMode.CBC;
provider.Key = Encoding.UTF8.GetBytes(key);
provider.IV = Encoding.UTF8.GetBytes(iv);
var transform = provider.CreateEncryptor();
using (var ms = new MemoryStream())
using (var cs = new CryptoStream(ms, transform, CryptoStreamMode.Write))
cs.Write(bytes, 0, bytes.Length);
var sb = new StringBuilder();
foreach (var b in ms.ToArray())
sb.Append(b.ToString("X2"));
public static string Decrypt(string hexString, string key, string iv)
var bytes = Enumerable.Range(0, hexString.Length)
.Select(x => Convert.ToByte(hexString.Substring(x, 2), 16))
var provider = new AesCryptoServiceProvider();
provider.Mode = CipherMode.CBC;
provider.Key = Encoding.UTF8.GetBytes(key);
provider.IV = Encoding.UTF8.GetBytes(iv);
var transform = provider.CreateDecryptor();
using (var ms = new MemoryStream(bytes))
using (var cs = new CryptoStream(ms, transform, CryptoStreamMode.Read))
using (var sr = new StreamReader(cs))
var plainText = sr.ReadToEnd();
public static void Main()
var key = "36D65EA1F6A849AF9964E0BAA98096B3";
var iv = "8E394493F1E54545";
var encrypted = Encrypt("testing", key, iv);
Console.WriteLine(encrypted);
var decrypted = Decrypt(encrypted ,key, iv);
Console.WriteLine(decrypted);
key = "65125495c896b9e73a7a79fd7ed21be034a05596d3c7d0b865fc40a67ccbdd03";
iv = "4b1e02d778aa1131e0612ff2dc2f9c49";
encrypted = Encrypt("testing", key, iv);
Console.WriteLine(encrypted);
decrypted = Decrypt(encrypted ,key, iv);
Console.WriteLine(decrypted);