如何在C#中实现Base64 URL安全编码?
我想在C#中实现Base64
URL安全编码。在Java中,我们有一个公共Codec
库,该库为我提供了一个URL安全编码的字符串。如何使用C#实现相同目的?
byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("StringToEncode");string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);
上面的代码将其转换为Base64,但填充了==
。有没有办法实现URL安全编码?
回答:
通常, 只需交换字母 以用于url中,这样就不必进行%编码;只有65个字符的3是有问题-
+
,/
和=
。最常见的替换是-
到位的+
,并_
代替/
。至于填充: 只需将其删除 (=
)即可;您可以 推断
出所需的填充量。在另一端:只需逆转该过程即可:
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes) .TrimEnd(padding).Replace('+', '-').Replace('/', '_');
与:
static readonly char[] padding = { '=' };
并反转:
string incoming = returnValue .Replace('_', '/').Replace('-', '+');
switch(returnValue.Length % 4) {
case 2: incoming += "=="; break;
case 3: incoming += "="; break;
}
byte[] bytes = Convert.FromBase64String(incoming);
string originalText = Encoding.ASCII.GetString(bytes);
但是,有趣的问题是: 这是否与“通用编解码器库”使用的方法相同? 测试当然是一件很合理的事情-这是一种非常普遍的方法。
以上是 如何在C#中实现Base64 URL安全编码? 的全部内容, 来源链接: utcz.com/qa/434202.html