using System.Security.Cryptography;
static readonly char[] padding = { '=' };
public static void Main()
string siteSecret = "12345678";
string jsonToken = "{'session_id':'abf52ca5-9d87-4061-b109-334abb7e637a','ts_ms':1445705791480}";
string jsonTokenValid = "{\"session_id\":\"abf52ca5-9d87-4061-b109-334abb7e637a\",\"ts_ms\":1445705791480}";
Console.WriteLine("Returned: \n" + EncryptText(jsonToken, siteSecret));
Console.WriteLine("Valid returned: \n" + EncryptText(jsonTokenValid, siteSecret));
public static string EncryptText(string PlainText, string siteSecret)
using (RijndaelManaged aes = new RijndaelManaged())
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
var bytes = Encoding.UTF8.GetBytes(siteSecret);
SHA1 sha1 = SHA1.Create();
var shaKey = sha1.ComputeHash(bytes);
byte[] targetArray = new byte[16];
Array.Copy(shaKey, targetArray, 16);
ICryptoTransform encrypto = aes.CreateEncryptor();
byte[] plainTextByte = Encoding.UTF8.GetBytes(PlainText);
byte[] CipherText = encrypto.TransformFinalBlock(plainTextByte, 0, plainTextByte.Length);
string returnValue = System.Convert.ToBase64String(CipherText)
.TrimEnd(padding).Replace('+', '-').Replace('/', '_');
Console.WriteLine("Proper: \n" + returnValue);
return HttpServerUtility.UrlTokenEncode(CipherText);