您好,如标题所述,我正在尝试将Cookie传递到页面上,但是我需要对它们进行加密,并且需要在特定页面(Home.aspx)上对其进行解密。任何人有任何想法如何?
到目前为止,我的代码是Login.aspx:
HttpCookie UserCookie = new HttpCookie("Login");
UserCookie.Value = txtUsername.Text;
UserCookie.Expires = DateTime.Now.AddHours(2);
Response.Cookies.Add(UserCookie);
最佳答案
您可以使用MachineKey.Protect
/MachineKey.Unprotect
此示例代码还使用Base64
转换,以避免Cookie值中的无效字符出现意外错误。
MachineKey.Protect(Encoding.UTF8.GetBytes(cookieValue), "a token").FromBytesToBase64();
Encoding.UTF8.GetString(MachineKey.Unprotect(Request.Cookies(cookieName).Value.FromBase64ToBytes, "a token"));
Src:https://msdn.microsoft.com/en-us/library/system.web.security.machinekey.protect(v=vs.110).aspx
注意:以上方法是克服空异常的扩展方法
public string FromBytesToBase64(this byte[] b)
{
return b == null ? "" : Convert.ToBase64String(b);
}
public byte[] FromBase64ToBytes(this string s)
{
return s == null ? null : Convert.FromBase64String(s);
}