Convert.FromBase64String()

时间:2009-04-01 19:00:17

标签: c# asp.net serialization encryption storage



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'数组的两个元素表示?



再见



编辑:

我必须道歉,因为没有提到我在页面标记中将enableViewStateMac设置为false,但它仍然无法正常工作

1 个答案:

答案 0 :(得分:3)

除了Base64编码,ASP.NET还会加密该数据。如果您在没有解密的情况下对其进行解码,则不会获得初始值。