Convert.FromBase64String () - PullRequest
       9

Convert.FromBase64String ()

0 голосов
/ 01 апреля 2009



Q1 - Если символ «C» сохранен в viewstate, то непосредственно перед визуализацией страницы Asp.Net сериализует «C» (вместе с другими данными) в строку Base64. При обратной передаче я выдаю следующий код:


protected void Page_Load(object sender, EventArgs e)
{
     TextBox1.Text = "ABCDEF";
     if (IsPostBack)
     {
          string viewStateString=Request["__VIEWSTATE"];

          byte[] stringBytes = Convert.FromBase64String(viewStateString);

          for (int i = 0; i < stringBytes.Length; i++)
          {
              if(stringBytes[i] == 67)
                    Label1.Text = ”deserialization successful”; 
          }               
     }
 }


, тогда FromBase64String () должен преобразовать сериализованные данные обратно в их исходный формат. Таким образом, одно из полей «stringBytes» должно содержать десятичное значение 67 (которое представляет собой символ ASCII C). Но, похоже, это не так. Есть идеи, что я делаю не так?


Q2 - Поскольку String представляет набор символов Unicode, я предполагаю, что в приведенном выше примере, когда «ABCDEF» десериализуется из состояния просмотра, каждый символ в строке «ABCDEF» представлен двумя элементами массива «stringBytes»?



прощай



EDIT:

Я должен извиниться за то, что не упомянул, что я установил для enableViewStateMac значение false в теге Page, но он все равно не работал

1 Ответ

3 голосов
/ 01 апреля 2009

В дополнение к кодировке Base64 ASP.NET шифрует эти данные. Если вы расшифруете его без расшифровки, вы не получите начальные значения.

...