2012-04-03 38 views
0

我接收到的编码的查询字符串包括ASCII字符0(http://localhost/Test_Authentication.asp?token=%13%23%02%00%01%01%00%01%01%05%02%02%03%00%02%02%0A%0A%0A%0A%0A%0A048),当检索到的值的字符串被终止该位置(%00)。我应该如何解决这个问题?编码ASCII字符0终止查询字符串在传统的ASP

以下是我的代码。

Response.CharSet = "utf-8"; 
Session.CodePage=65001; 

var strToken = (Request.QueryString("token").Count > 0)?Request.QueryString("token")(1):""; 

回答

0

%00对于空字符为ascii。我怀疑这就是为什么字符串在此时被终止的原因。

我会建议使用您创建散列令牌,或许是一个创建它作为一个十六进制值来代替,e.g不同的格式和方法;

B73A21FBCE3921E5DD0C935AB4D710DD 

MD5散列通常表示为32位十六进制数。这在querystring中传递会更加友好。

+0

可能的情况是令牌已经是某种形式的散列。 MD5没有定义任何编码,其结果只是一个字节流。真正的问题是数据需要被编码为Base64,或者像你在Hex中一样。 – AnthonyWJones 2012-04-03 17:30:51

+0

谢谢@AnthonyWJones。修正答案以反映你的贡献 – 2012-04-04 15:07:22