using System.Security.Cryptography;
public static void Main()
var environmentName = new []
var environmentSalt = new []
"legal.lead.home.passcode",
"legal.lead.test.passcode",
"legal.lead.last.passcode"
for(var i = 0; i < environmentName.Length; i++)
string saltLocal = environmentSalt[i];
var cleartext = $"{names[i]}|{codes[i]}";
var encoded = CryptoEngine.Encrypt(cleartext, saltLocal, out var vector);
var recovered = CryptoEngine.Decrypt(encoded, saltLocal, vector);
Console.WriteLine("Environment : {0} ", environmentName[i]);
Console.WriteLine(" Encoded : {0} ", encoded);
Console.WriteLine(" Vector : {0}", vector);
private static class CryptoEngine
public static string Encrypt(string input, string key, out string vector)
byte[] inputArray = Encoding.UTF8.GetBytes(key);
var key64 = Convert.ToBase64String(inputArray, 0, inputArray.Length);
return EncryptData(input, key64, out vector);
public static string Decrypt(string input, string key, string vectorBase64)
byte[] inputArray = Encoding.UTF8.GetBytes(key);
var key64 = Convert.ToBase64String(inputArray, 0, inputArray.Length);
return DecryptData(input, key64, vectorBase64);
private static string EncryptData(string plainText, string keyBase64, out string vectorBase64)
using Aes aesAlgorithm = Aes.Create();
aesAlgorithm.Key = Convert.FromBase64String(keyBase64);
aesAlgorithm.GenerateIV();
vectorBase64 = Convert.ToBase64String(aesAlgorithm.IV);
ICryptoTransform encryptor = aesAlgorithm.CreateEncryptor();
using (System.IO.MemoryStream ms = new())
using CryptoStream cs = new(ms, encryptor, CryptoStreamMode.Write);
using (StreamWriter sw = new(cs))
encryptedData = ms.ToArray();
return Convert.ToBase64String(encryptedData);
private static string DecryptData(string cipherText, string keyBase64, string vectorBase64)
using Aes aesAlgorithm = Aes.Create();
aesAlgorithm.Key = Convert.FromBase64String(keyBase64);
aesAlgorithm.IV = Convert.FromBase64String(vectorBase64);
ICryptoTransform decryptor = aesAlgorithm.CreateDecryptor();
byte[] cipher = Convert.FromBase64String(cipherText);
using MemoryStream ms = new(cipher);
using CryptoStream cs = new(ms, decryptor, CryptoStreamMode.Read);
using StreamReader sr = new(cs);