根据RFC4648,C#:base64url

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

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

例:

base64编码:

Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes( “AA”)); //返回“QUE =”

base64url编码:

HttpServerUtility.UrlTokenEncode(System.Text.Encoding.ASCII.GetBytes( “AA”)); //返回“QUE1”,但我希望“QUE”

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

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

但是,您应该添加unit testing以检查它是否确实使用RFC 4648字母表(并且与RFC 4648相同)。 文档如此稀疏有点令人惊讶:(