根据RFC4648,C#:base64url

时间:2014-11-04 09:53:52

标签: c# base64 urlencode url-encoding

我正在根据C#中的RFC4648寻找base64url的(快速)标准实现。

我找到HttpServerUtility.UrlTokenEncode但看起来这并不遵循RFC4648(UrlTokenEncode在末尾添加了一个数字,表示已移除的=个数字的数量;请参阅{{3} }和here)。

示例:

base64编码:

  

Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(" AA&#34)); //返回" QUE ="

base64url编码:

  

HttpServerUtility.UrlTokenEncode(System.Text.Encoding.ASCII.GetBytes(" AA&#34));   //返回" QUE1"但我希望" QUE"

1 个答案:

答案 0 :(得分:8)

根据评论,听起来像HttpServerUtility.UrlTokenEncode做正确的事情之外的额外字符用于填充。所以你应该能够做到:

string customBase64 = HttpServerUtility.UrlTokenEncode(data);
string rfc4648 = customBase64.Substring(0, customBase64.Length - 1);

但是,您应该添加单元测试以检查它是否确实使用RFC 4648字母表(和RFC 4648一样)。文档如此稀疏有点令人惊讶:(