C# 加密cookies
我正在尝试使用以下代码加密和解密cookies。我可以加密,但解密函数接受字节输入。如何将cookie转换为字节进行解密?错误是 无法将类型“System.Web.HttpCookie”隐式转换为“byte[] 错误行为“byte[]encrypted=mycokie;如何在解密之前将“cookie”转换为字节[]?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
加密:
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中设置该值。显示的代码不会这样做。您需要做的是:
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);