I need to encrypt and decrypt my web application URL. currently, I'm using global.asax route table to rewriting the URL like
Product --> http://localhost:45212/Product?p=2
Product --> http://localhost:45212/Product?p=2&w=1
Cart --> http://localhost:45212/Cart
I need full URL after the domain name encrypt and decrypt like below
Product --> http://localhost:45212/xjh&$&G&&^%
Product --> http://localhost:45212/xjh&$&G&&^YRW$#DFF%
Cart --> http://localhost:45212/^&jfgj^8678
if any other way is possible please let me know.
What I have tried:
Encrypt
public static string Encrypt(string clearText)
{
try
{
string EncryptionKey = "@Test";
byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
using (Aes encryptor = Aes.Create())
{
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);
cs.Close();
}
clearText = Convert.ToBase64String(ms.ToArray());
}
}
return clearText;
}
catch (Exception ex)
{
Log.writeLog(ex);
return null;
}
}
Decrypt
public static string Decrypt(string cipherText)
{
try
{
string EncryptionKey = "@Test";
cipherText = cipherText.Replace(" ", "+");
byte[] cipherBytes = Convert.FromBase64String(cipherText);
using (Aes encryptor = Aes.Create())
{
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.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(cipherBytes, 0, cipherBytes.Length);
cs.Close();
}
cipherText = Encoding.Unicode.GetString(ms.ToArray());
}
}
return cipherText;
}
catch (Exception ex)
{
Log.writeLog(ex);
return null;
}
}
button click event
Response.Redirect("/Product?p="+Encrypt(code));
another page in page load event
string code = Decrypt(Request.QueryString["p"]);
this will be getting the value but I need encrypt decrypt after the domain the name.