using System.Security.Cryptography;
public static void Main()
byte[] keyInBytes = Convert.FromBase64String("GCu+w7R/uvBLpqZ8TpxlTasi1nDLyl0jFJ8QCdLQXA0=");
byte[] ivInBytes = Convert.FromBase64String("IIfGf/QTFhSVZbm61eaeaw==");
Console.WriteLine("[ENCODE/DECODE LOCALLY]");
string toBeEncrypted = "Hello, Watch me be Encoded and Decoded!";
byte[] encrypted = AESCryptDecrypt.Encrypt(toBeEncrypted, keyInBytes, ivInBytes);
Console.WriteLine("Encrypted: " + Convert.ToBase64String(encrypted));
string decrypted = AESCryptDecrypt.Decrypt(encrypted, keyInBytes, ivInBytes);
Console.WriteLine("Decrypted " + decrypted);
Console.WriteLine("\n[QUICK TESTING]");
byte[] testKeyBytes = Convert.FromBase64String("GCu+w7R/uvBLpqZ8TpxlTasi1nDLyl0jFJ8QCdLQXA0=");
byte[] testIVBytes = Convert.FromBase64String("IIfGf/QTFhSVZbm61eaeaw==");
byte[] testToDecrypt = Convert.FromBase64String("EJPdCLXc7iqHn9nTWf7amA==");
string testDecrypt = AESCryptDecrypt.Decrypt(testToDecrypt, testKeyBytes, testIVBytes);
Console.WriteLine("Decrypted " + testDecrypt);
public static byte[] Encrypt(string plainText, byte[] Key, byte[] IV) {
using(AesManaged aes = new AesManaged()) {
aes.Mode = CipherMode.CFB;
aes.Padding = PaddingMode.None;
ICryptoTransform encryptor = aes.CreateEncryptor(Key, IV);
using(MemoryStream ms = new MemoryStream()) {
using(CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) {
using (StreamWriter sw = new StreamWriter(cs))
encrypted = ms.ToArray();
public static string Decrypt(byte[] cipherText, byte[] Key, byte[] IV) {
using(AesManaged aes = new AesManaged()) {
aes.Mode = CipherMode.CFB;
aes.Padding = PaddingMode.None;
ICryptoTransform decryptor = aes.CreateDecryptor(Key, IV);
using(MemoryStream ms = new MemoryStream(cipherText)) {
using(CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) {
using (StreamReader reader = new StreamReader(cs))
plaintext = reader.ReadToEnd();