HttpServerUtility.UrlTokenEncode中的潜在错误?

时间:2014-07-02 21:51:23

标签: .net base64

在追踪错误时,我发现在HttpServerUtility.UrlTokenEncodeConvert.ToBase64String之间转换为Base64并返回时出现以下差异:

string test = "IN ('en-US')";
Console.WriteLine(HttpServerUtility.UrlTokenEncode(Encoding.UTF8.GetBytes(test)));
Console.WriteLine(Convert.ToBase64String(Encoding.UTF8.GetBytes(test)));

结果略有不同:第一种方法有一个额外的尾随零:

SU4gKCdlbi1VUycp0
SU4gKCdlbi1VUycp

JavaScript btoa()也为我提供了没有尾随零的值。

我知道这个零只是用于填充,但是第二个转换仍然符合base64标准吗?或者我们应该避免使用HttpServerUtility.UrlTokenEncode支持Convert.ToBase64String无处不在?

1 个答案:

答案 0 :(得分:2)

我认为此SO帖子提供了有关此问题的更多信息,最后的数字似乎表示已删除=个符号的数量:Encode URL from C#, decrypt URL in PHP (extra characters being added somehow)

从它的外观来看,UrlTokenEncode尤其适用于对URL中的标记进行编码。令牌不应包含在网址中具有含义的字符,例如=/+

在这里,您可以看到用于UrlTokenEncode的代码:http://referencesource.microsoft.com/System.Web/R/0e3cb83cf51ca334.html