using System.Security.Cryptography;
public static void Main()
Console.WriteLine("final string: " + Program.encodeUrl("http://127.0.0.1:8000/"));
public static string encodeUrl(string url)
string retURLEncryptedVal = HttpUtility.UrlEncode(Encrypt(url, "5j04OtO4gKm+/Ynez+wW/BjUvdhn1SfuGJbrQmsTViU="));
return retURLEncryptedVal;
public static string Encrypt(string clearText, string encryptionKey)
byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
using (Aes encryptor = Aes.Create())
Console.WriteLine("plain url: " + clearText);
Console.WriteLine("key: " + encryptionKey);
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(encryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
using (MemoryStream ms = new MemoryStream())
using (CryptoStream cs = new CryptoStream(ms,encryptor.CreateEncryptor(), CryptoStreamMode.Write))
cs.Write(clearBytes, 0, clearBytes.Length);
foreach(byte b in ms.ToArray()) {
clearText = Convert.ToBase64String(ms.ToArray());
Console.WriteLine("encrypted, pre urlencode: " + clearText);