如何在 ASP.NET 中加密和解密我的 Cookie
本文关键字:解密 我的 Cookie 加密 ASP NET | 更新日期: 2023-09-27 18:35:31
正如标题所说,您好,我正在尝试将我的cookie传递到页面上,但是我需要加密它们,并且在特定页面(主页.aspx)上我需要解密它。 有人知道如何吗?
到目前为止我的代码,登录.aspx:
HttpCookie UserCookie = new HttpCookie("Login");
UserCookie.Value = txtUsername.Text;
UserCookie.Expires = DateTime.Now.AddHours(2);
Response.Cookies.Add(UserCookie);
我不得不稍微改变LGSon的答案,以便它对我有用。
Convert.ToBase64String(MachineKey.Protect(Encoding.UTF8.GetBytes("your cookie value")))
Encoding.UTF8.GetString(MachineKey.Unprotect(Convert.FromBase64String("your cookie value")))
您可以使用
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);
}