2009-04-01 1 views
0



Convert.FromBase64Stringは()

Q1は - 文字 'C' はビューステートに保存されている場合は、ページがレンダリングされる直前に、Asp.Netは、Base64文字列に(他のデータと一緒に) 'C' をシリアライズ。ポストバックの上に、私は次のコードを発行する場合:



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'フィールドの1つに10進値67(ASCII文字Cを表す)が含まれている必要がありますが、そうではありません。私が間違っていることは何ですか?


Q2 - 文字列は、Unicode文字のセットを表しているので、私は「ABCDEF」のビューステートから逆シリアル化されたときに上記の例では、「ABCDEF」の文字列の各文字は、の二つの要素で表現されると仮定する'stringBytes'配列ですか?



さようなら



EDIT:

私はページタグでfalseにenableViewStateMacを設定しなかったが、それはまだなかったことを言及していないことをお詫びしなければなりません仕事

答えて

3

さらに、Base64 ASP.NETをエンコードすると、そのデータが暗号化されます。解読せずに解読すれば、初期値は得られません。

+0

これは正しいです。クロスサイトスクリプティングやブラインドポスト攻撃を防ぐため、ViewStateは暗号化されています。 –

関連する問題