2013-08-03 4 views
0

Я пытаюсь зашифровать и дешифровать файлы cookie с помощью следующего кода. Я могу зашифровать, но дешифровать функцию принимает байтовый ввод. как я могу преобразовать cookie в байт для дешифрования? ОшибкаШифрование файлов cookie

не может неявно преобразовать тип "System.Web.HttpCookie" в «байт [] линия

ошибка "байт [] шифруется = MyCookie;" Как я могу конвертировать "куки" в байт [] перед дешифрования Enryption:

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); 

Decription:

HttpCookie myCookie = Request.Cookies["co"]; 
byte[] encrypted = myCookie; 

using (AesCryptoServiceProvider myAes = new AesCryptoServiceProvider()) 
{ 
    string decripted = AesEncryption.DecryptStringFromBytes_Aes(myCookie.ToString(), myAes.Key, myAes.IV); 
} 
+0

ваших зашифрованных значений не добавляются в печенье в первую очередь? – driis

+2

не следует использовать byte [] encrypted = myCookie.ToString..dont encrpt cookie скорее зашифровать информацию, присутствующую в нем. – thunderbird

+0

MachineKey.Protect может быть лучшим выбором для шифрования данных в ASP.NET. http://msdn.microsoft.com/en-us/library/system.web.security.machinekey.protect.aspx – spender

ответ

0

Что я думаю, что вы пытаетесь сделать, это зашифровать значение, а затем установить это значение в cookie. Показанный код не делает этого. Что вам нужно сделать, это:

  1. зашифровать значение
  2. Преобразование зашифрованных байт в печатаемой строке (потому что печенье обычный текст), кодировка base64 является общим вариантом.
  3. Установите это значение в файле cookie.
  4. Установите файл cookie в ответ.

При попытке вернуться к исходному значению запустите тот же процесс назад.

+0

Я могу преобразовать зашифрованные данные в строку, но не могу добавить в файл cookie. как я могу применить кодировку base64? – ayha

0
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); 
1
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); 
Смежные вопросы