using System.Security.Cryptography;
public static void Main()
var keyString = "EkRnG6OK9Zju6fWT86pIal1iKEPnD9E7";
var stringToDecrypt = "z2Oage4aycnP8JZ19BqfmhopYpUUiFrBk075+v/IbOz90+2RWCWMi2lYPizTa/PpSfvwyY8mF5BHSiWy8NegIsFYl5vTtTZpFPTBAAhl/GX/Dd4UhOl0K6svcPNgpa6vjl4NwtIY2zPvcSDdoiio6cKf8ryqwJR1jxOeva6kHrm2v0B1DIniGYj/3VMm6X+MDdj9XPBfZbw73LMLUn1tWbBxiPPRAS/zUwJwsWhCr7I=";
stringToDecrypt = System.Net.WebUtility.UrlDecode(stringToDecrypt);
Console.WriteLine(Decrypt(keyString, stringToDecrypt));
public static string Decrypt(string keyString, string stringToDecrypt)
var key = Encoding.UTF8.GetBytes(keyString);
stringToDecrypt = stringToDecrypt.Replace('-', '+').Replace('_', '/');
switch (stringToDecrypt.Length % 4)
case 2: stringToDecrypt += "=="; break;
case 3: stringToDecrypt += "="; break;
var bytes = Convert.FromBase64String(stringToDecrypt);
var text = new byte[bytes.Length - 16];
Array.Copy(bytes, iv, 16);
Array.Copy(bytes, 16, text, 0, text.Length);
using (var aes = Aes.Create())
aes.Padding = PaddingMode.PKCS7;
aes.Mode = CipherMode.CBC;
var decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (var msDecrypt = new MemoryStream(text))
using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
using (var srDecrypt = new StreamReader(csDecrypt))
plaintext = srDecrypt.ReadToEnd();