using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Security.Cryptography;
public static void Main(string[] args)
byte[] data = Convert.FromBase64String("e6nP7hkzPE8Dl7SqZ0GanuBb9C5QWapeqSKH6OcUcIwuVoC+3xytm7bM9anZdeYw6y877Kncr6lKKfwkokcXnpEyxOjTSkr++gpJaHMse/Pgrp32GEHpj3GiR/kdgoZlHRE9gJ0e0m2V4J5AnkS25akZ1kMbkMJXSusfHCklfqVVk6wWRYIEj83vTL3OBagjw698bOnU1oDRelxL6ki98QvCOtMdhW83vrJ1lXy+DBJfJmq9QhytZUCER4nuJRj2vz4oc85fvoOgE7wdeArtZB4+7gc1QbWia3ltFS0Fn0sEglY7t7V5JsLuBoguHyBn38MTtPLpQXlnq+hBGS182C1gRGqA+v1LdXMs6lRx/VcFbXhvIo555dr1n4+vCQqRhQdjnNoegbbQGFvL0wQQLukHtaqsLAJFIGIALDIcD+y/ojtbi3l57yFmw9Xg/oXlTZyO4zSxsHvox5GtWLhAvQ==");
byte[] iv = new byte[16];
Buffer.BlockCopy(data,0,iv,0,16);
byte[] key = StringToByteArray("8ead6a94d9916a646371fa6db82fab3d9945bcec43a132de50e0a9bb2f60b236");
string decrypted = Unpad(Decrypt(key, iv, data));
Console.WriteLine(decrypted);
string test = "authtoken=2GEsAf8a9JoFnaRchLTaf&email=remybdr@orange.frµconnect=300590&os_type=android&os_version=22&app_version=4.4.6&device_id=4870020582858325&device_model=LGLG-M700N&token_id=APA91bE_cIN7SEi1tGmU8ZU_L4mzwSxiQqdUPOsWVmrKvjiFiuqq5Wte9kHe81891X4t-DYXTpw87KDYEJZhrA8WMlIjVK1a207yPHQ3oZOCWO_AoCWp0Iiy61b-IDeKiqT-ni5WCSIi";
string encrypt = Encrypt(key, test);
Console.WriteLine(encrypt);
byte[] encryptedBytes = Convert.FromBase64String(encrypt);
Buffer.BlockCopy(encryptedBytes,0,iv,0,16);
decrypted = Unpad(Decrypt(key, iv, encryptedBytes));
Console.WriteLine(decrypted);
public static byte[] StringToByteArray(string hex) {
return Enumerable.Range(0, hex.Length)
.Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
public static byte[] Decrypt(byte[] key, byte[] iv, byte[] data)
using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
aesAlg.Mode = CipherMode.CBC;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(data))
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
decrypted = new byte[1024*1024];
int read = csDecrypt.Read(decrypted, 0, decrypted.Length);
Array.Resize(ref decrypted, read);
public static string Unpad(byte[] text)
for(int i = text.Length -1; i >= 0; i--)
byte[] newArray =new byte[text.Length - trim];
Buffer.BlockCopy(text, 0, newArray, 0, text.Length - trim);
return Encoding.UTF8.GetString(newArray);
public static string Encrypt(byte[] key, string text)
Random random = new Random();
byte[] iv = new byte[16];
byte[] data = Encoding.UTF8.GetBytes(Pad(text));
using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
aesAlg.Mode = CipherMode.CBC;
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream(data))
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Read))
encrypted = new byte[1024*1024];
int read = csEncrypt.Read(encrypted, 0, encrypted.Length);
Array.Resize(ref encrypted, read);
byte[] final = new byte[iv.Length + encrypted.Length];
Buffer.BlockCopy(iv, 0, final, 0, iv.Length);
Buffer.BlockCopy(encrypted, 0, final, iv.Length, encrypted.Length);
return Convert.ToBase64String(final);
public static string Pad(string source)
int padLength = 16 - (source.Length % 16);
for (int i = 0; i < padLength; i++) {
source = source + '\u0000';