using System.Security.Cryptography;
AES aes = new AES("TEST");
string e = aes.Encrypt("Worked!");
string d = aes.Decrypt(e);
Console.WriteLine("Encrypted: " + e);
Console.WriteLine("Decrypted: " + d);
Console.WriteLine("The whole source can be found on https://github.com/halitalf/cross-aes");
public AES(string SecretKey)
string k = Pass2Key(SecretKey);
Console.WriteLine("Key: " + k);
key = Encoding.UTF8.GetBytes(k);
public string Encrypt(string plainText)
if (plainText == null || plainText.Length <= 0)
throw new ArgumentNullException("plainText");
if (key == null || key.Length <= 0)
throw new ArgumentNullException("key");
using (var rijAlg = new RijndaelManaged())
rijAlg.Mode = CipherMode.CBC;
rijAlg.Padding = PaddingMode.Zeros;
ICryptoTransform encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);
using (var msEncrypt = new MemoryStream())
using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
using (var swEncrypt = new StreamWriter(csEncrypt))
swEncrypt.Write(plainText);
encrypted = msEncrypt.ToArray();
return System.Convert.ToBase64String(encrypted);
public string Decrypt(string encrypted)
byte[] cipherText = System.Convert.FromBase64String(encrypted);
if (cipherText == null || cipherText.Length <= 0)
throw new ArgumentNullException("cipherText");
if (key == null || key.Length <= 0)
throw new ArgumentNullException("key");
using (var rijAlg = new RijndaelManaged())
rijAlg.Mode = CipherMode.CBC;
rijAlg.Padding = PaddingMode.Zeros;
ICryptoTransform decryptor = rijAlg.CreateDecryptor(rijAlg.Key, rijAlg.IV);
using (var msDecrypt = new MemoryStream(cipherText))
using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
using (var srDecrypt = new StreamReader(csDecrypt))
plaintext = srDecrypt.ReadToEnd();
public string Pass2Key(string SecretKey)
return System.Convert.ToBase64String((new SHA512CryptoServiceProvider()).ComputeHash(Encoding.UTF8.GetBytes(SecretKey))).Substring(0, 32);