如何解码 Base64 字符串(以及 JWT Payload)
Base64 是可逆编码,并非加密。一步解码 Base64,正确处理 Unicode,并读取使用 Base64url 的 JWT 段。
Base64 到底是什么
Base64 把二进制数据映射到 64 个可打印的 ASCII 字符。它完全可逆且不需要密钥,因此是编码而非加密 —— 千万不要用它来「隐藏」机密。
编码与解码
在浏览器里用 btoa 编码、atob 解码。对非 ASCII 文本,要经过一次 UTF-8 往返,这样 é、ü、你这样的字符才不会变成乱码字节。
读取 JWT
JWT 是用点号连接的三段 Base64url 字符串:header、payload、signature。前两段解码后可以读出 claim;signature 是二进制内容,不是用来给人看的。
Base64 与 Base64url 的区别
标准 Base64 使用 + 与 /,并用 = 做填充;URL 安全的 Base64url 把它们换成 - 和 _,并去掉填充,使得这个值可以安全地放进 URL 与 JWT。
解码不等于验证
解码 JWT 只是读出 claim,并不能证明它真实可信。任何人都能伪造一个 payload 写着 "role":"admin" 的 token;只有用签发方的密钥校验过签名,才说明 token 真实有效。永远不要基于未经验证的 token 做出信任决定。
常见的 JWT claim 及含义
iss 是签发者,sub 是主体(用户 id),aud 是预期受众,exp 是过期时间(Unix 秒),iat 是签发时间,nbf 是「不早于」时间,jti 是唯一 id。自定义 claim 会与它们并列。务必在服务端而不是仅在客户端检查 exp 与 aud。
填充与 URL 安全变体
Base64url 经常没有 = 填充。要在代码中解码,先用 = 把长度补到 4 的倍数,再把 - 换成 +、_ 换成 /,最后跑一遍普通 Base64 解码器。浏览器的 atob 不能直接接受 Base64url —— 必须先转换。
JSON 修复指南
主题中心
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
具体指南
- URL 编码:百分号编码查询参数与路径
- 将 YAML 转为 JSON(并避免缩进错误)
- 将 JSON 转为 CSV:把对象数组扁平化
- 将 JSON 转为 XML:根元素、属性与数组
- 将 JSON 转义为字符串字面量(并解码双重编码的 JSON)
- 修复 JSON 中的尾随逗号
- 修复 JSON 中的单引号
- 修复 JSON 中未加引号 的键
- 修复 LLM 输出的 JSON
- 修复 JSON 解析错误:Expected Property Name
- JSON 与 JavaScript 对象字面量的区别
- 在发起 API 请求前校验 JSON
- JSON 格式化器 vs JSON 修复工具
- 修复 JSON Unexpected Token 错误
- JSON 转 JavaScript 对象转换器