jsonToken encryption

CSharp · Console

/Program.cs

    using System;
    using System.Security.Cryptography;
    using System.Text;
    using System.Web;
     
    public class Test
    {
		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);
    	        aes.Key = targetArray;
     
    	        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);
    	    }
    	}
    }
;