首頁 >後端開發 >C++ >如何在 C# 中將字串編碼為 Base64 URL 安全?

如何在 C# 中將字串編碼為 Base64 URL 安全?

DDD
DDD原創
2025-01-25 03:26:09695瀏覽

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 安全?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn