工具
ZH

什么是 Base64 编码?

Base64 是一种只用 64 个可打印字符来表示任意二进制数据的方法。本文将介绍它的工作原理、存在的意义,以及什么时候该用(和不该用)它。

一句话了解 Base64

Base64 是一种在 RFC 4648 中定义的二进制到文本的编码方式,它把每 3 个字节的数据表示为 4 个字符,这些字符来自由 A–Z、a–z、0–9、+ 和 / 组成的字母表。

为什么需要 Base64

许多系统最初只为文本而设计,例如电子邮件(SMTP)、JSON、XML、HTML 属性、URL 和终端。图片或 PDF 等原始二进制数据中可能包含这些系统会修改或拒绝的字节。Base64 把数据转换成安全的可打印字符,确保它在传输过程中原样送达。

Base64 编码原理分步详解

  1. 取输入字节:M、a、n = 77、97、110。
  2. 将它们写成 24 位二进制:01001101 01100001 01101110。
  3. 把这些位拆分为四组,每组 6 位:010011 010110 000101 101110 = 19、22、5、46。
  4. 在字母表中查找每个数字对应的字符:19 = T,22 = W,5 = F,46 = u。

于是 Man 就变成了 TWFu。解码只需将上述步骤反过来执行即可。

Base64 字母表

数值字符
0–25A–Z
26–51a–z
52–610–9
62+(URL 安全:-)
63/(URL 安全:_)
填充=

= 填充的含义

当输入长度不是 3 的倍数时,最后一组会被补齐,并用 = 标记:Ma 编码为 TWE=,M 编码为 TQ==。在有效的 Base64 字符串中,填充符永远不会出现在中间。

Base64 的变体

Base64 不是加密

Base64 不会隐藏任何内容,任何人都能瞬间解码。由于输出看起来像随机字符,它常被误认为是一种保护手段。保护机密请使用 AES 等真正的加密算法,Base64 只用于把加密后的字节以文本形式传输。

体积开销

编码后的长度为 4 × ⌈n / 3⌉ 个字符(n 为字节数),比原始数据大约多 33%。如果加上 MIME 换行,还会再增加 2–3%。

Base64 的应用场景

常见问题

Base64 和加密、哈希是一回事吗?

不是。加密需要密钥才能还原,哈希则完全不可逆,而 Base64 任何人都能解码。

为什么叫 Base64?

因为它使用由 64 个字符组成的字母表,每个字符携带 6 位信息(26 = 64)。

如何判断一个字符串是不是 Base64?

它只包含 A–Z、a–z、0–9、+、/(或 - 和 _),长度通常是 4 的倍数,末尾可能带有一个或两个 = 号。最快的方法是直接粘贴到我们的解码器中试一试。

最后更新: