根据“用于 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中文网其他相关文章!