
什么是 Base64 编码?
Base64 是一种编码方案,它使用 64 个字符的字母表(A-Z、a-z、0-9、+、/)将二进制数据转换为文本格式。它不是加密——不提供任何安全性——但它是通过纯文本通道传输二进制数据的通用解决方案。

为什么需要 Base64
最初的互联网协议(SMTP、HTTP/1.0、JSON)是为 7 位 ASCII 文本设计的。二进制数据——图像、文件、加密密钥——无法通过这些通道安全传输,因为:
- 某些字节值具有特殊含义(空字节、换行符、控制字符)
- 某些系统会剥离或转换高位字符
- 二进制数据可能包含类似协议命令的序列
Base64 通过将任何二进制数据转换为安全的可打印 ASCII 字符子集来解决这个问题。
Base64 字符集
标准 Base64 使用 64 个可打印字符:
- A-Z(26 个字符)
- a-z(26 个字符)
- 0-9(10 个字符)
- 和 /(2 个字符)
- = 用于填充
这个 64 字符集可以用每个字符 6 位表示(2^6 = 64)。
Base64 编码如何工作
Base64 将 3 个字节(24 位)转换为 4 个字符(4 × 6 位 = 24 位):
- 取 3 个字节:01001101 01100001 01101110("Man")
- 分组为 6 位块:010011 010110 000101 101110
- 映射到 Base64 字符:T W F u
- 结果:"TWFu"
当输入不能被 3 整除时,添加 = 填充:
- 1 个额外字节 → 2 个字符 + "=="
- 2 个额外字节 → 3 个字符 + "="
大小开销
Base64 将数据大小增加约 33%:
- 3 字节输入 → 4 字节输出(比例 = 1.333...)
- 1 MB 文件作为 Base64 变为约 1.37 MB
如果包含换行符(MIME 要求每行 76 个字符),开销增加到约 37%。
Base64 变体

标准 Base64(RFC 4648)
使用 + 和 /。使用 = 填充。用于 MIME 电子邮件、数据 URI。
URL 安全 Base64(RFC 4648 §5)
将 + 替换为 -,将 / 替换为 _,以避免 URL 编码冲突。用于 JWT 令牌、URL 参数、文件名。
无填充 Base64
某些系统(如许多 JWT 实现)省略 = 填充。解码器必须处理这种情况。
MIME Base64
标准 Base64 加上每 76 个字符的换行符(\r\n)。用于电子邮件附件。
Base64 的常见用途

数据 URL(CSS/HTML)
将小图像直接嵌入 CSS 或 HTML,无需单独文件:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..." />
JWT 令牌
JWT 的三个部分(头部、载荷、签名)都使用 Base64URL 编码。
API 认证
HTTP Basic Auth 将凭据编码为 Base64:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
加密密钥
PEM 格式(用于 SSL 证书、SSH 密钥)包装 Base64 编码的 DER 二进制数据:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
-----END PUBLIC KEY-----
电子邮件附件(MIME)
所有电子邮件附件在 MIME 多部分格式中都是 Base64 编码的。
在 JavaScript 和 Python 中解码
// 编码
const encoded = btoa('Hello, World!'); // 'SGVsbG8sIFdvcmxkIQ=='
// 解码
const decoded = atob('SGVsbG8sIFdvcmxkIQ=='); // 'Hello, World!'
// 对于二进制数据,使用 Uint8Array 方法
import base64
encoded = base64.b64encode(b'Hello, World!').decode() # 'SGVsbG8sIFdvcmxkIQ=='
decoded = base64.b64decode('SGVsbG8sIFdvcmxkIQ==') # b'Hello, World!'
使用 Base64 字符串转换器
我们的工具:
- 编码文本或数据 — 将任何字符串转换为 Base64
- 解码 Base64 — 从编码字符串恢复原始内容
- 选择变体 — 标准、URL 安全或 MIME(带换行符)
- Unicode 支持 — 使用 UTF-8 正确处理非 ASCII 文本
- 复制结果 — 一键复制编码/解码输出
用于生成数据 URL、调试 JWT 内容、编码 API 凭据以及理解 Web 应用程序中的 Base64 编码数据。