You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中System.Convert.FromBase64String解码Base64字符串报错的解决方法

解决Base64解码报错的方案

你的问题出在目标字符串是Base64URL编码(JWT标准使用的编码格式),而非.NET System.Convert.FromBase64String 要求的标准Base64格式,两者核心差异如下:

  • Base64URL用 - 和 _ 替代了标准Base64的 + 和 /
  • Base64URL通常省略末尾的填充字符 =

要正常解码,需先将Base64URL转换为标准Base64格式,再执行解码操作。修改后的代码如下:

var test = "eyJhbGciOiJSUzI1NiIsImtpZCI6IlRlc3RDZXJ0IiwidHlwIjoiYXQrand0In0";
// 1. 将Base64URL特殊字符替换为标准Base64对应字符
var base64String = test.Replace('-', '+').Replace('_', '/');
// 2. 补充填充字符=,确保字符串长度为4的整数倍
base64String = base64String.PadRight(base64String.Length + (4 - base64String.Length % 4) % 4, '=');
// 3. 执行标准Base64解码
var base64EncodedBytes = System.Convert.FromBase64String(base64String);
var hidenString = System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
// 最终输出:{"alg":"RS256","kid":"TestCert","typ":"at+jwt"}

关键步骤说明

  • 字符替换:修正两种编码的字符映射差异,让字符串符合标准Base64的字符范围要求。
  • 补充填充:标准Base64强制要求长度为4的整数倍,通过PadRight计算并补充缺失的=,避免因长度不合法触发解码报错。

内容的提问来源于stack exchange,提问作者Iria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:39:56