首頁 > 後端開發 > C++ > 如何在C#中實現編碼和解碼的URL-SAFE BASE64?

如何在C#中實現編碼和解碼的URL-SAFE BASE64?

Mary-Kate Olsen
發布: 2025-01-25 03:07:11
原創
902 人瀏覽過

How to Achieve URL-Safe Base64 Encoding and Decoding in C#?

C#中的URL安全Base64編碼

在處理基於URL的應用程式時,Base64編碼對於確保資料完整性和可讀性至關重要。在C#中,內建的Base64編碼功能提供了一種便捷的方法,可以將二進位資料轉換為基於文字的表示形式。但是,它會在編碼字串中添加填充字元("=="),這在用於URL時可能會導致問題。

URL安全編碼

為了克服此限制,URL安全編碼刪除填充字符,並將特定問題字符(" ","/","=")替換為URL​​友好的字符("-","_","") 。這確保了編碼字串可以安全地傳輸到URL參數中,而不會引起任何解釋問題。

在C#中實作URL安全編碼

與Java的Codec函式庫不同,C#沒有內建的URL安全編碼函數。但是,您可以透過幾個簡單的步驟達到相同的結果:

  1. 使用Convert.ToBase64String()執行常規Base64編碼。
  2. 使用TrimEnd()刪除編碼字串中的填充。
  3. 使用Replace()取代問題字元(例如,將" "替換為"-",將"/"替換為"_")。

範例

<code class="language-csharp">byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("StringToEncode");
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes)
        .TrimEnd(new char[] {'='}).Replace('+', '-').Replace('/', '_');</code>
登入後複製

注意:您可以將填充字元陣列定義為靜態唯讀欄位以提高效率。

反轉過程

要將URL安全編碼的字串解碼回其原始形式,只需反轉此過程:

  1. 將URL友善的字元替換為其原始對應字元。
  2. 必要時用'='字元將字串填入4的倍數。
  3. 使用Convert.FromBase64String()將字串轉換回二進位資料。

範例

<code class="language-csharp">string incoming = returnValue
    .Replace('_', '/').Replace('-', '+');
switch(incoming.Length % 4) {
    case 2: incoming += "=="; break;
    case 3: incoming += "="; break;
}
byte[] bytes = Convert.FromBase64String(incoming);
string originalText = Encoding.ASCII.GetString(bytes);</code>
登入後複製

透過組合這些步驟,您可以有效地在C#中實作URL安全編碼。重要的是要測試常用的編解碼庫的方法是否與這種實作一致,以確保在需要互通性的場景中的相容性。

以上是如何在C#中實現編碼和解碼的URL-SAFE BASE64?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板