首页 >后端开发 >C++ >如何将字符串编码为C#中的base64 URL-SAFE?

如何将字符串编码为C#中的base64 URL-SAFE?

DDD
DDD原创
2025-01-25 03:26:09691浏览

How to Encode Strings to Base64 URL-Safe in C#?

C# 中 Base64 URL 安全编码详解

Base64 URL 安全编码是一种常用的 URL 编码技术,它避免了对字符进行 %-编码的需要。本文将探讨如何在 C# 中实现这种编码。

JavaScript 方法对比

Java 使用 Codec 库可以轻松实现 URL 安全编码。 C# 也可以采用类似的方法。

Base64 转换

以下代码演示如何将字符串转换为 Base64:

<code class="language-csharp">byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("StringToEncode");
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);</code>

然而,这种方法会在编码结果末尾添加双等号填充 (=)。

实现 URL 安全编码

为了实现 URL 安全编码,我们需要进行以下步骤:

  1. 替换字符: 将 ' ' 替换为 '-',将 '/' 替换为 '_'。
  2. 移除填充: 删除任何填充字符 '='。

以下代码实现了这些修改:

<code class="language-csharp">char[] padding = { '=' };
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes)
        .TrimEnd(padding).Replace('+', '-').Replace('/', '_');</code>

请注意,padding 定义为包含 '=' 字符的数组。

解码过程

解码过程如下:

<code class="language-csharp">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);</code>

与 Java Codec 库的比较

需要进一步验证这种方法是否与 Java 的 "common codec library" 方法一致。 这将是一个有趣的测试方向。

以上是如何将字符串编码为C#中的base64 URL-SAFE?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn