using System.Security.Cryptography;
using Microsoft.IdentityModel.Tokens;
public static void Main()
Console.WriteLine("Hello World");
string data = "dp79Nm0qZaOuXTcDH4qI_E5cCWz9OcPncGyVsJvsNuIM3H32xcEPXZ8Di2JVOgyiucQtc1AiC7smMZZ7SJMTTOT4fTl-Oisa1InvP7_xtsyjtBkNl_cVSNLo3CSBhyAou1I0D9ozPufPHMXnTq9tAkKOk16rd3SYzmwitrorUUw7AxzB302wDwDs-5PYvqUfr_6GSGvStFiVJsfX43KQcGE6r7tbqaunYEIIEaGYL9E";
string iv = "2-nBhTJTt6pCR8c3Muu9eQ";
string key = "4a1800974ba097ec75cb10e7deab8bef6508549b12b53c2b30173b5592b036b6";
data = "kxzelHyCLZALxdyPXCInYXyRK5Jxpmak5bMvWWNRDAfqz_7iPtR3qYda7QFWc6Hx4IBH10mE_F5JQ8taq_rFq-D1SCFLSA-ZGF-hbYQMzJ5MKD5em5zxTu-aKJFMP9f3ZjoKXtncSiCcUcNguaLGFkub2ywKDDJGvXxChRGxL6JCWqGOGWriTCKxm5wNQF0paxwvdNeg1y2OIpbp4QouVoHAn2upGW-ELJQknIAX7rc=";
iv = "T0ZSbmE3M20qYXplMDF4WQ==";
key = "2b1804974ca297ec75cb10e7deab8bef6508549b12b53c2b30173b5592b036b6";
byte[] key_bytes = StringToByteArray(key);
string key_string = System.Text.Encoding.UTF8.GetString(key_bytes);
byte[] text_bytes = System.Convert.FromBase64String(PadBase64(data.Replace("-", "+").Replace("_", "/")));
byte[] iv_bytes = System.Convert.FromBase64String(PadBase64(iv.Replace("-", "+").Replace("_", "/")));
string iv_string = System.Text.Encoding.UTF8.GetString(iv_bytes);
string str = DecryptStringFromBytes_Aes(text_bytes, key_bytes, iv_bytes);
Console.WriteLine("Encryption TEST");
string data2 = "{\"first_name\":\"Jimmy\",\"last_name\":\"Fucker\",\"email\":\"jimbo123@gmail.com\",\"phone\":null,\"address1\":null,\"address2\":null,\"postal_code\":\"02108\",\"city\":\"Boston\",\"state\":\"MA\"}";
string iv2 = "OFRna73m*aze01xY";
byte[] iv2Bytes = System.Text.Encoding.UTF8.GetBytes(iv2);
string key2_hex = "2b1804974ca297ec75cb10e7deab8bef6508549b12b53c2b30173b5592b036b6";
byte[] key2_bytes = StringToByteArray(key2_hex);
Console.WriteLine(key2_hex);
byte[] encrypted = EncryptStringToBytes_Aes(data2, key2_bytes, iv2Bytes);
string encryptedBase64 = Base64EncodeUrlSafe(encrypted);
Console.WriteLine(encryptedBase64);
string iv2Base64 = Base64EncodeUrlSafe(iv2);
Console.WriteLine(iv2Base64);
public static string PadBase64(string encodedValue)
string output = encodedValue;
while (output.Length % 4 != 0){
public static string Base64EncodeUrlSafe(byte[] textBytes)
return System.Convert.ToBase64String(textBytes).Replace("+", "-").Replace("/", "_");;
public static string Base64EncodeUrlSafe(string plainText)
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes).Replace("+", "-").Replace("/", "_");;
public static string Base64DecodeUrlSafe(string base64EncodedData)
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData.Replace("-", "+").Replace("_", "/"));
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
public static byte[] StringToByteArray(string hex)
return System.Linq.Enumerable.Range(0, hex.Length)
.Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
public static string HexEncode(string inputString)
byte[] byteArray = Encoding.Default.GetBytes(inputString);
string hexString = BitConverter.ToString(byteArray).Replace("-", "");
static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV)
if (cipherText == null || cipherText.Length <= 0)
throw new ArgumentNullException("cipherText");
if (Key == null || Key.Length <= 0)
throw new ArgumentNullException("Key");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("IV");
using (AesManaged aesAlg = new AesManaged())
aesAlg.Mode = CipherMode.CBC;
aesAlg.Padding = PaddingMode.PKCS7;
byte[] decryptedBytes = null;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(cipherText))
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
plaintext = srDecrypt.ReadToEnd();
static byte[] EncryptStringToBytes_Aes(string plainText, byte[] Key, byte[] IV)
if (plainText == null || plainText.Length <= 0)
throw new ArgumentNullException("plainText");
if (Key == null || Key.Length <= 0)
throw new ArgumentNullException("Key");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("IV");
using (AesManaged aesAlg = new AesManaged())
aesAlg.Mode = CipherMode.CBC;
aesAlg.Padding = PaddingMode.PKCS7;
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
swEncrypt.Write(plainText);
encrypted = msEncrypt.ToArray();