您好,如标题所述,我正在尝试将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);
}

08-19 03:53