gpt4 book ai didi

c# - C#中如何实现Base64 URL安全编码?

转载 作者:IT王子 更新时间:2023-10-29 03:38:52 29 4
gpt4 key购买 nike

我想在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# - C#中如何实现Base64 URL安全编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26353710/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com