Encryption with MachineKey is not persistent
I use the MachineKey.Protect() method to encrypt the id passed as a query string in my asp.net MVC application.
Here's the code I use to encrypt/decrypt:
public static string Encrypt(this string expression)
{
if (string.IsNullOrEmpty(expression))
return string.Empty;
byte[] stream = Encoding.Unicode.GetBytes(expression);
byte[] encodedValue = MachineKey.Protect(stream);
return HttpServerUtility.UrlTokenEncode(encodedValue);
}
public static string Decrypt(this string expression)
{
if (string.IsNullOrEmpty(expression))
return string.Empty;
byte[] stream = HttpServerUtility.UrlTokenDecode(expression);
byte[] decodedValue = MachineKey.Unprotect(stream);
return Encoding.Unicode.GetString(decodedValue);
}
And, here is the MachineKey element in my web.config file:
.
.
.
The problem is the encrypted id is not persistent. Every time I call the method, I get a new encrypted expression. How do I make it persistent?