广告

免费在线Base64编解码

帮助与说明

完整说明

Base64 是什么?

Base64 是一种 把二进制数据转换成文本 的编码方式。它会把字节(binary)映射成一组可打印的 ASCII 字符:

  • A-Z、a-z、0-9、+、/,以及用于补齐长度的 =(padding)

因为输出是纯文本,Base64 常用于"只能放文本"的场景,例如:

  • JSON / XML 载荷
  • URL(通常用 Base64URL 变体)
  • 电子邮件(MIME)
  • 在文本格式中嵌入小文件

3 转 4 的映射原理

名字来自字母表大小:64 个字符,每个字符恰好表示 6 位数据(2⁶ = 64)。编码器按组工作:

  1. 取 3 字节输入 = 24 位。
  2. 拆成四个 6 位一组。
  3. 把每个 6 位值(0–63)映射到字母表中的一个字符。
"Man" = 0x4D 0x61 0x6E  (3 字节,24 位)
 010011 010110 000101 101110  →  19, 22, 5, 46  →  T, W, F, u
结果:"TWFu"

当输入长度不是 3 的倍数时,最后一组用 padding 补齐:

  • 剩 2 字节 → 补一个 =(16 位数据装进 3 个字符)
  • 剩 1 字节 → 补两个 ==(8 位数据装进 2 个字符)

这就是你在很多字符串末尾看到 = 的全部由来——它存在的唯一目的就是让输出长度恒为 4 的倍数。

为什么输出总是大 33%

四个 6 位字符承载的位数和三个字节一样都是 24 位——但传输时每个字符要占满一个 8 位字节。于是 3 字节变成了 4 字节:固定的 +33.3% 膨胀。这就是为什么一个 3 MB 的附件 Base64 编码后是 4 MB 字符串,也是为什么永远不要对需要传输的大资源做 Base64。

Base64 编码的是字节,不是字符

Base64 的输入永远是字节序列。编码文本时,文本先被按某种编码转换成字节——在 Web 上几乎总是 UTF-8。"é" 在 UTF-8 里是 2 个字节、但只是 1 个字符;假设了不同编码(或按 UTF-16 码元处理)的工具会算出不同结果。这也解释了为什么把二进制数据(图片、ZIP)按文本解码会得到乱码:那些字节本来就不是 UTF-8 文本。

这个工具能做什么

在 Base64 页面(/zh/base64)你可以:

  • 把文本编码成 Base64
  • 把 Base64 解码回文本
  • 快速判断一个字符串是否像 Base64

使用示例

编码字符串

输入:

hello world

输出(Base64):

aGVsbG8gd29ybGQ=

解码 Base64 字符串

输入:

aGVsbG8gd29ybGQ=

输出:

hello world

Data URI:当代最常见的 Base64 场景

开发者如今最常接触 Base64 的地方是 data URI,它把文件直接内联进文档:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..." />

什么时候划算:

  • ✅ 2-4 KB 以下的小图片(图标、logo)——少一次 HTTP 请求
  • ✅ 单文件交付物:HTML 邮件、独立报告、离线文档
  • ✅ canvas 动态生成的图片,无需服务器往返

什么时候适得其反:

  • ❌ 大图片——33% 体积膨胀,且没有压缩收益
  • ❌ 跨页面重复使用——浏览器无法独立缓存这个内联资源
  • ❌ 关键 CSS 路径——CSS 里一大段 base64 会阻塞所有用户的解析

一个常被忽视的点:HTTP/2 和 HTTP/3 的多路复用已经消除了"每个资源一次请求"的开销——那正是当初内联流行的理由。内联之前先做度量。

常见踩坑

1) Base64 不是加密

Base64 不保护你的数据。它只是改变表示方式——解码不需要任何秘密。任何拿到 Base64 字符串的人都能瞬间读出内容。

需要保密,请使用真正的加密(如 AES-GCM)并妥善保管密钥。

2) Padding 与换行

  • 很多 Base64 字符串以 = 或 == 结尾。
  • 某些系统会每 76 个字符插入换行(邮件/MIME 场景)。解码前可能需要先移除空格/换行。

3) Base64 与 Base64URL

当 Base64 用在 URL 里时,+ 和 / 有时会引起问题。

Base64URL 通常会:

  • 把 + 替换为 -
  • 把 / 替换为 _
  • 去掉末尾的 =

如果你看到 - 或 _,那很可能是 Base64URL,而不是标准 Base64。JWT 是最大的使用方:它的三个分段全部是 Base64URL。

真实系统中的 Base64

场景示例
HTTP Basic AuthAuthorization: Basic dXNlcjpwYXNz
JWT每个点分隔的分段都是 Base64URL
邮件附件MIME Content-Transfer-Encoding: base64
Data URIdata:image/png;base64,...
内嵌密钥/证书PEM 文件把 Base64 包在 -----BEGIN----- 标记之间
Git 对象blob、commit、tag 的内部存储

隐私与安全

  • 该工具设计为 在浏览器本地运行。
  • 你的输入不应被上传。

即便如此:

  • 不建议在公共/共享电脑上粘贴密码、私钥、身份证号等敏感信息。
  • 高度敏感数据建议使用离线工具处理。
广告

阿里云 AI Agent 零代码部署 · 68 元起

轻量服务器 + Token Plan 组合购,分钟级部署 OpenClaw/Hermes AI 助手,7×24 小时在线、不限流量、数据自主可控,支持 11 款主流大模型

立即查看