Base64 编码解码 / Base64URL 安全转换

两者的编码算法完全相同,差别只在字符表:标准 Base64 用 + 与 /,Base64URL 把它们换成 - 与 _,并去掉末尾的 = 填充。因此同一段文本的两种结果长度会差几位,而且不能拿标准解码器直接解 Base64URL 的结果。

Base64 编码解码Base64URL 安全转换
第 62、63 个字符+ 与 /- 与 _
末尾 = 填充补齐到 4 的倍数一律不带
放进 URL 会怎样+ 被当成空格,/ 被当成路径分隔符原样可用
典型使用者JSON 里的二进制字段、邮件编码JWT 的 header 与 payload、Cookie
加密解密/编码

Base64 编码解码

Base64 是一种基于 64 个可打印字符来表示二进制数据的编码方式,常用于在文本协议中传输二进制数据。 编码:将任意数据转为 A-Z、a-z、0-9、+、/ 共 64 个字符组成的字符串 解码:将 Base64 字符串还原为原始数据 URL 安全模式:将 + 替换为 -,/ 替换为 _,去除 = 填充

加密解密/编码
加密解密/编码

Base64URL 安全转换

Base64URL 是 Base64 的 URL 安全变体,主要用于 JWT 等需要在 URL 中传输的场景。 将 + 替换为 - 将 / 替换为 _ 去除尾部 = 填充

加密解密/编码

什么情况下用 Base64 编码解码

  • 结果要放进 JSON、数据库字段或邮件正文,不经过 URL。
  • 对接的服务端只认标准 Base64,或期待数据带 = 填充。
  • 给别人一段 base64 让他直接 atob(),标准形式兼容性最好。

什么情况下用 Base64URL 安全转换

  • 结果要拼进 URL 查询参数、路径片段或 Cookie 值。
  • 处理 JWT:它的三段规定用 base64url 且不带填充。
  • 涉及文件名的场景,避免 / 被当成目录分隔符。

一句话结论

先看你把结果放进哪里:URL、Cookie、JWT 用 URL 变体,其余用标准 Base64。解码方向也要对上——用标准解码器解 base64url 会报非法字符。

其他对比

全部工具