如何在 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);

如何在 ASP.NET 中加密和解密我的 Cookie

我不得不稍微改变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);
}