Quick actions

cmd+k|ctrl+k

Navigation

Languages

AES-DotNet

Snippet info

Language

Csharp

Visibility

public

Author

c6768848dac7853d72470e4083a65b096fdb9e2e

Created

2017-09-04T14:23:03Z

Updated

2017-09-04T14:31:12Z

using System;
using System.Security.Cryptography;

class MainClass {
    
    private static string my_encrypt(string mytext, string key, string iv)
    {
        byte[] bkey = System.Text.Encoding.UTF8.GetBytes(key);
        byte[] biv = System.Text.Encoding.UTF8.GetBytes(iv);
        byte[] toEncrypt = System.Text.Encoding.UTF8.GetBytes(mytext);

        byte[] cipherBytes = null;

        //Possible algorithmName values are: "AES", "AesCryptoServiceProvider", "System.Security.Cryptography.AesCryptoServiceProvider", "AesManaged", and "System.Security.Cryptography.AesManaged".
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Mode = CipherMode.CBC;
            aesAlg.KeySize = 256;
            aesAlg.BlockSize = 128;
            aesAlg.Key = bkey;
            aesAlg.IV = biv;
            using (System.Security.Cryptography.ICryptoTransform transform = aesAlg.CreateEncryptor())
            {
                using (var mStream = new System.IO.MemoryStream())
                {
                    using (var cStream = new CryptoStream(mStream, transform, CryptoStreamMode.Write))
                    {
                        cStream.Write(toEncrypt, 0, toEncrypt.Length);
                        cStream.FlushFinalBlock();
                        cipherBytes = mStream.ToArray();
                    }
                }
            }
        }
        return Convert.ToBase64String(cipherBytes);
    }

    private static string my_decrypt(string mytext, string key, string iv)
    {
        //decrypt
        byte[] bkey = System.Text.Encoding.UTF8.GetBytes(key);
        byte[] biv = System.Text.Encoding.UTF8.GetBytes(iv);
        byte[] toDecrypt = Convert.FromBase64String(mytext);

        string decryptedString = null;

        //Possible algorithmName values are: "AES", "AesCryptoServiceProvider", "System.Security.Cryptography.AesCryptoServiceProvider", "AesManaged", and "System.Security.Cryptography.AesManaged".
        using (Aes aesAlg = Aes.Create())
        {
            aesAlg.Mode = CipherMode.CBC;
            aesAlg.KeySize = 256;
            aesAlg.BlockSize = 128;
            aesAlg.Key = bkey;
            aesAlg.IV = biv;
            using (System.Security.Cryptography.ICryptoTransform transform2 = aesAlg.CreateDecryptor()) // <-- difference here
            {
                using (var mStream2 = new System.IO.MemoryStream())
                {
                    using (var cStream2 = new CryptoStream(mStream2, transform2, CryptoStreamMode.Write))
                    {
                        cStream2.Write(toDecrypt, 0, toDecrypt.Length);
                        cStream2.FlushFinalBlock();
                        decryptedString = System.Text.Encoding.Default.GetString(mStream2.ToArray());
                    }
                }
            }
        }
        return decryptedString;
    }

    static void Main() {
        Console.WriteLine("AES 256");

        string toEncryptString = "testtesttesttesttest";
        string key = "j80o0nywcn0yeapjk0qzh2dw0zw6u0f0"; //must be 32bytes
        string iv = "7608kuwtoi436by1"; //must be 16bytes

        Console.WriteLine( "text: " + toEncryptString);
        Console.WriteLine( "key: " + key);
        Console.WriteLine( "iv: " + iv);

        string enc = my_encrypt(toEncryptString, key, iv);
        Console.WriteLine( "encrypted: " + enc);
        Console.WriteLine( "binary encrypted: " + BitConverter.ToString(Convert.FromBase64String(enc)));

        string decr = my_decrypt(enc, key, iv);
        Console.WriteLine( "decrypted: " + decr);
        Console.WriteLine( "binary decrypted: " + BitConverter.ToString(System.Text.Encoding.Default.GetBytes(decr)));
    }
}
INFO