Base64 编码的工作原理
Base64 编码的工作原理是将输入数据划分为 3 字节(24 位)块,并将每个块转换为四个 6 位 Base64 字符。
Base64 字母表:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
填充: 如果输入长度不能被3整除,则在末尾添加填充字符(=)。
例子: “M”(ASCII 中的 77)= 二进制的 01001101 = TQ==
常见 Base64 编码示例
以下是一些常见的 Base64 编码示例:
| 原文 | Base64 编码 | 说明 |
|---|---|---|
Hello |
SGVsbG8= |
带 padding 的简单文本 |
World |
V29ybGQ= |
5 个字符的单词 |
Hello World! |
SGVsbG8gV29ybGQh |
包含空格和标点 |
Base64 |
QmFzZTY0 |
无需 padding |
user:password |
dXNlcjpwYXNzd29yZA== |
Basic Auth 风格值 |
{"ok":true} |
eyJvayI6dHJ1ZX0= |
小型 JSON 载荷 |
Base64 的常见用例
- 电子邮件附件: MIME 电子邮件格式使用 Base64 对二进制附件进行编码
- 数据网址: 使用 data:image/png;base64,… 在 HTML/CSS 中嵌入小图像
- API认证: 许多 API 使用 Base64 进行基本身份验证(用户名:密码)
- 配置文件: 在 JSON/XML 配置中存储二进制数据或特殊字符
- 网页开发: 对 AJAX 请求中的数据负载进行编码
Base64 解码错误和安全使用建议
Base64 是编码格式,不是加密。任何拿到编码值的人都可以解码,因此不要只依靠 Base64 保护密码、私钥、token 或机密数据。
如果 Base64 无法解码,请检查是否缺少字符、复制了换行、使用了 - 和 _ 的 URL-safe 变体,或末尾缺少 = padding。
- 当二进制数据必须通过纯文本系统传输时,可以使用 Base64。
- 生产页面中不建议对大图使用 Base64,因为它会增加体积并降低缓存效率。
- 如果目标只是让 URL 查询参数安全,请使用 URL 编码。