using System.Security.Cryptography;
private static RijndaelManaged _alg = new RijndaelManaged();
public static void Main()
string ciphertext = "EAAAACMtkB64He4p/MSI+yF2A2rJWhxpssG6b48Z01JrfbErvQ1r6Gi0esgCmdrBaFxOPFF1+AUsyrUUl5FQ4Nk0dSU=";
string decrypted = Decrypt(ciphertext);
Console.WriteLine(decrypted);
var salt = "1111111111111111";
var saltBytes = Encoding.UTF8.GetBytes(salt);
Test("12345", saltBytes, 1000, 128);
public static string Test(string key, byte[] salt, int iterations, int keysize)
using (Aes aes = new AesManaged())
aes.Padding = PaddingMode.PKCS7;
Rfc2898DeriveBytes rfc2898 = new Rfc2898DeriveBytes(key, salt, iterations);
aes.Key = rfc2898.GetBytes(aes.KeySize / 8);
aes.IV = rfc2898.GetBytes(aes.BlockSize / 8);
Console.WriteLine(Convert.ToBase64String(aes.Key));
Console.WriteLine(Convert.ToBase64String(aes.IV));
private static byte[] getKey()
var secret = "D2s1d_5$_t0t3||y_4c3$0m3!1!1!!";
var salt = "o6805542kcM7c5";
var saltBytes = Encoding.ASCII.GetBytes(salt);
using (var keyDeriver = new Rfc2898DeriveBytes(secret, saltBytes))
_alg.Key = keyDeriver.GetBytes(_alg.KeySize / 8);
public static string Decrypt(string ciphertext)
var cipherTextBytes = Convert.FromBase64String(ciphertext);
var ivSize = BitConverter.ToInt32(cipherTextBytes, 0);
var iv = new byte[ivSize];
var offset = sizeof(int);
Array.Copy(cipherTextBytes, offset, iv, 0, ivSize);
using (var msDecrypt = new MemoryStream(cipherTextBytes, offset, cipherTextBytes.Length - offset))
using (var decryptor = _alg.CreateDecryptor(_alg.Key, iv))
using (var decryptStream = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
using (var reader = new StreamReader(decryptStream))
return reader.ReadToEnd();