根據「用於 URL 的修改後的 Base64」概念定義,解碼和編碼修改後的 Base64 URL 可以透過自訂程式碼或利用 HttpServerUtility
類別中的方法來實現。
要執行修改後的 Base64 編碼,可以使用以下程式碼:
<code class="language-csharp">// 执行正常的 base64 编码 byte[] encodedBytes = Encoding.UTF8.GetBytes(unencodedText); string base64EncodedText = Convert.ToBase64String(encodedBytes); // 应用 URL 变体 string base64UrlEncodedText = base64EncodedText.Replace("=", "").Replace('+', '-').Replace('/', '_');</code>
對於解碼,可以使用以下程式碼:
<code class="language-csharp">string base64EncodedText = base64UrlEncodedText.Replace('-', '+').Replace('_', '/'); // 根据需要追加“=”字符 - 最佳方法是什么? // 我正常的 base64 解码现在使用 encodedText</code>
或者,您可以使用 HttpServerUtility
類別的 UrlTokenEncode
和 UrlTokenDecode
方法:
<code class="language-csharp">///<summary> /// 使用 UTF-8 字符集进行 Base 64 编码,使用 URL 和文件名安全字母表。 ///</summary> ///原始字符串 ///<returns>Base64 编码的字符串</returns> public static string Base64ForUrlEncode(string str) { byte[] encbuff = Encoding.UTF8.GetBytes(str); return HttpServerUtility.UrlTokenEncode(encbuff); } ///<summary> /// 使用 UTF-8 解码使用 URL 和文件名安全字母表的 Base64 编码字符串。 ///</summary> ///Base64 代码 ///<returns>解码后的字符串。</returns> public static string Base64ForUrlDecode(string str) { byte[] decbuff = HttpServerUtility.UrlTokenDecode(str); return Encoding.UTF8.GetString(decbuff); }</code>
注意 1:HttpServerUtility
方法的輸出不是有效的 Base64 字串,因為它用對 URL 安全的字元替換了某些字元。
注意2:HttpServerUtility
的輸出格式與RFC4648 中的base64url 演算法不同,因為它根據替換的等號數量用'0'、'1' 或'2' 替換'='填充,以確保URL 安全性。
以上是如何在 ASP.NET Framework 中對修改後的 Base64 URL 進行編碼和解碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!