Skip to content
DocsAll
教程

Base64 编码原理:为什么编码后变大 33%

Timi Tian · 发布于 2026年7月7日 · 更新于 2026年7月12日
Base64编码数据编码

Base64 是什么

Base64 是一种把二进制数据编码成纯文本的方式。它用 64 个可打印字符(A-Z、a-z、0-9、+、/)表示任意二进制数据,让二进制能通过只支持文本的通道传输(如 JSON、XML、URL、邮件)。

编码原理

字符表

Base64 用 64 个字符:大写 A-Z(26)、小写 a-z(26)、数字 0-9(10)、加号 +、斜杠 /,共 64 个。等号 = 用作末尾填充。

编码过程

  1. 把输入数据按每 3 字节(24 位)一组
  2. 把 24 位拆成 4 组,每组 6 位
  3. 每 6 位对应一个 Base64 字符(2 的 6 次方 = 64,正好 64 个字符)
  4. 不足 3 字节用 = 填充

举例

3 字节输入(24 位)→ 4 个 Base64 字符。所以编码后字节数是原来的 4/3,即约 133%,增大 33%。

为什么变大 33%

原本质上 1 字节能表示 256 种值(8 位),Base64 每个字符只表示 64 种值(6 位)。要表示同样信息量,6 位编码比 8 位编码多用 8/6 = 4/3 的字符。所以 Base64 编码后体积是原来的 4/3,增大 33%。

这是 Base64 的固有代价——用空间换"文本可传输"。

编码示例

文本 "Man"(3 字节 ASCII):

  • M = 77 = 01001101
  • a = 97 = 01100001
  • n = 110 = 01101110
  • 拼成 24 位:01001101 01100001 01101110
  • 拆成 4 组 6 位:010011 010110 000101 101110
  • 对应 Base64 字符:T W F u
  • 编码结果:TWFu

3 字节变成 4 字节,正好 4/3。

Base64 变体

标准 Base64

字符表含 + 和 /,末尾用 = 填充。适合通用场景。

URL 安全 Base64

  • 和 / 在 URL 里有特殊含义,替换成 - 和 _。适合 URL 传输。

Base64URL

URL 安全变体,常用于 JWT(JSON Web Token)。

Base64 vs Base32 vs Hex

Base64

  • 字符集 64 个
  • 编码后增大 33%
  • 字符含大小写字母数字和 +/,区分大小写

Base32

  • 字符集 32 个(A-Z、2-7)
  • 编码后增大 60%
  • 不区分大小写、避开易混字符,适合人工输入场景

Hex(十六进制)

  • 字符集 16 个(0-9、a-f)
  • 编码后增大 100%(每字节变两字符)
  • 最简单、最兼容,但体积翻倍

体积:Hex > Base32 > Base64。要小选 Base64,要兼容简单选 Hex。

Base64 是加密吗

不是。Base64 是编码,不是加密。任何人都能解码,没有密钥保护。把 Base64 当加密用是严重误解——它只是"伪装"成乱码,解码即明文。

敏感数据要加密用 AES 等加密算法,Base64 只用于传输编码。

使用场景

数据传输

二进制数据通过文本通道传输(JSON、XML、URL、邮件),用 Base64 编码成文本。

嵌入小图

小图编成 Base64 内联进 HTML/CSS,减少 HTTP 请求(详见 Base64 图片用途)。

JWT

JSON Web Token 用 Base64URL 编码 header 和 payload。

数据 URI

data URL 协议用 Base64 嵌入资源。

Basic Auth

HTTP Basic 认证用 Base64 编码用户名密码(注意不是加密,要配 HTTPS)。

用 DocsAll 编解码

Base64 编码解码工具

  1. 输入文本或 Base64 字符串
  2. 选择编码或解码
  3. 一键转换
  4. 复制结果

浏览器端处理,数据不外传。

常见坑

当成加密

Base64 不加密,敏感数据别只靠 Base64"保护"。

编码后体积变大

大文件 Base64 编码膨胀 33%,传输和存储成本增加。能用二进制通道就别用 Base64。

字符集混淆

标准 Base64 含 +/,放进 URL 要转义或用 URL 安全变体。混用变体导致解码失败。

末尾 = 不可省

填充符 = 是编码的一部分,省略可能解码错误。部分实现容忍省略,但不规范。

小结

Base64 是编码不是加密,用 64 字符表示二进制,体积增大 33% 是固有代价。用途是让二进制走文本通道传输。URL 场景用 URL 安全变体。DocsAll 编解码工具浏览器端运行,数据不外传。

T
Timi Tian 创始人 / 全栈工程师

DocsAll 创始人,10 年全栈开发经验,专注浏览器端文档处理技术与隐私保护架构。前新加坡科技公司技术负责人。