Base64 编码详解:何时使用及如何使用
你一定在很多地方见过 Base64 字符串——电子邮件附件、Data URI、API 令牌,甚至 JWT 载荷中。那些由字母、数字以及偶尔出现的 + 或 / 组成的长字符串可能看起来像加密数据,但 Base64 根本不是加密。它是一种编码方案,理解这个区别至关重要。
什么是 Base64 编码?
Base64 使用 64 个可打印的 ASCII 字符将二进制数据转换为文本表示:A-Z、a-z、0-9、+ 和 /(使用 = 进行填充)。这使得二进制数据可以安全地通过纯文本系统传输。
编码结果总是比原始数据大 33%——这是文本安全性的代价。
使用我们的 Base64 编码器 亲自尝试——粘贴任何文本即可看到即时转换。所有编码都在你的浏览器中完成,因此你的数据保持私密。
Base64 工作原理
编码过程将输入分成 6 位组(因为 2^6 = 64),并将每个组映射到 64 个字符中的一个。当输入长度不能被 3 整除时,会出现 = 填充。
何时使用 Base64
在 HTML/CSS 中嵌入图片
Data URI 可以消除小图片的 HTTP 请求。非常适合 10KB 以下的图标。对于较大的图片,请先使用我们的 图片优化工具 进行优化。
API 数据传输
当 API 需要在 JSON 载荷中传输二进制数据时,Base64 是标准编码方式。
JWT 令牌
JSON Web Token 使用 Base64URL 编码。使用我们的 JWT 编码器/解码器 解码任何 JWT。
基本认证
HTTP Basic Auth 将凭据编码为 Base64。重要提示:这是编码,不是加密。请务必使用 HTTPS。
常见的 Base64 错误
- 将其视为加密 — Base64 提供零安全性。使用我们的 哈希生成器 进行实际哈希
- 编码大文件 — 33% 的大小增加在大规模场景下很重要
- 双重编码 — 在编码之前检查数据是否已经编码
- 忘记填充 — 某些系统会去除
=填充字符
不同语言中的 Base64
JavaScript: btoa('Hello') / atob('SGVsbG8=')
Python: base64.b64encode(b'Hello') / base64.b64decode('SGVsbG8=')
命令行: echo -n 'Hello' | base64
常见问题
Base64 编码和加密一样吗?
不一样。Base64 任何人都可以自由解码。请使用专业的加密方式来保障安全。
为什么 Base64 会使数据变大?
三个字节变成四个字符(每个 6 位而不是 8 位),导致 33% 的增长。
相关资源
- URL 编码指南 — Web 开发者的另一个必备编码知识
- JWT 令牌详解 — Base64 在 JWT 中的实际应用
- Base64 编码器/解码器 — 即时编码和解码
- 哈希生成器 — 当你需要真正的安全性时