如何在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

回到顶部