C# 加密cookies

C# 加密cookies,c#,asp.net,.net,C#,Asp.net,.net,我正在尝试使用以下代码加密和解密cookies。我可以加密,但解密函数接受字节输入。如何将cookie转换为字节进行解密?错误是 无法将类型“System.Web.HttpCookie”隐式转换为“byte[] 错误行为“byte[]encrypted=mycokie;如何在解密之前将“cookie”转换为字节[]? 加密: HttpCookie myCookie = new HttpCookie("co"); myCookie.Values.Add("customerId", dr["cus

我正在尝试使用以下代码加密和解密cookies。我可以加密,但解密函数接受字节输入。如何将cookie转换为字节进行解密?错误是

无法将类型“System.Web.HttpCookie”隐式转换为“byte[]

错误行为“byte[]encrypted=mycokie;如何在解密之前将“cookie”转换为字节[]?

加密:

HttpCookie myCookie = new HttpCookie("co");
myCookie.Values.Add("customerId", dr["customerId"].ToString());

using (AesCryptoServiceProvider myAes = new AesCryptoServiceProvider())
{
    byte[] encrypted = AesEncryption.EncryptStringToBytes_Aes(myCookie.ToString(),    myAes.Key, myAes.IV);
}
Response.Cookies.Add(myCookie);
说明:

HttpCookie myCookie = Request.Cookies["co"]; byte[] encrypted = myCookie; using (AesCryptoServiceProvider myAes = new AesCryptoServiceProvider()) { string decripted = AesEncryption.DecryptStringFromBytes_Aes(myCookie.ToString(), myAes.Key, myAes.IV); }
HttpCookie mycokie=Request.Cookies[“co”]; 字节[]加密=mycokie; 使用(AESCryptServiceProvider myAes=new AESCryptServiceProvider()) { string decripted=AESEncyption.DecryptStringFromBytes_Aes(mycokie.ToString(),myAes.Key,myAes.IV); }
我认为您要做的是加密一个值,然后在cookie中设置该值。显示的代码不会这样做。您需要做的是:

  • 加密值
  • 将加密的字节转换为可打印的字符串(因为Cookie是纯文本),base64编码是一个常见的选项
  • 在cookie中设置该值
  • 在响应中设置cookie
  • 当尝试返回到原始值时,向后运行相同的进程

    HttpCookie myCookie = new HttpCookie("co");
    
    using (AesCryptoServiceProvider myAes = new AesCryptoServiceProvider())
    {
        byte[] encrypted = AesEncryption.EncryptStringToBytes_Aes(dr["customerId"].ToString(), myAes.Key, myAes.IV);
    myCookie.Values.Add("customerId", Convert.ToBase64String(encrypted));
    }
    Response.Cookies.Add(myCookie);
    
    并在解密前做相反的操作

    HttpCookie myCookie = Request.Cookies["co"];
    byte[] encrypted = Convert.FromBase64String(myCookie.Value);
    

    您的加密值没有首先添加到cookie?您不应该使用byte[]encrypted=myCookie.ToString..不要加密cookie,而是加密其中的信息。MachineKey.Protect可能是在ASP.NET中加密数据的更好选择。我可以将加密数据转换为字符串,但无法添加到cookie。如何应用base64编码?
    byte[] b1 = System.Text.Encoding.ASCII.GetBytes(myCookie.ToString());
    string str1 = Convert.ToBase64String(b1);
    
    byte[] b2 = Convert.FromBase64String(str1);
    string str2 = System.Text.Encoding.ASCII.GetString(b2);