什么是 Base64 编码,何时使用它
如果您使用 API、邮件系统或网页开发,您一定遇到过 Base64 · 即使您没认出来。那些看起来像乱码的长串字母和数字?很可能就是 Base64。
Base64 做什么
Base64 将二进制数据(任意字节序列)转换为仅使用 64 个「安全」字符的文本字符串:A-Z、a-z、0-9、+ 和 /。如果需要,结果会以 = 填充结尾。
示例:
- 文本:
Hello World - Base64:
SGVsbG8gV29ybGQ=
这种编码存在是因为许多系统(邮件、JSON、URL、XML)只能处理文本。二进制数据 · 图片、压缩文件、原始字节 · 可能包含会破坏这些系统的字符。Base64 将二进制转换为文本,可通过任何文本通道传输而不被损坏。
常见用途
在 HTML/CSS 中嵌入图片:
<img src="data:image/png;base64,iVBORw0KGgoAAAA..." />
小图标和 logo 可以直接嵌入 HTML,省去一次额外的 HTTP 请求。
API 载荷:当 API 期望 JSON 但您需要包含二进制数据(文件上传、签名图像)时,将其编码为 Base64 可将其作为普通文本字段包含。
邮件附件:邮件协议(SMTP)基于文本。每个附件在幕后被编码为 Base64 以作为文本传输。
身份验证头:HTTP Basic 认证在 Authorization 头中将 用户名:密码 编码为 Base64。(这是编码,不是加密 · 本身不提供安全性。)
如何编码和解码
- 选择编码或解码· 选择转换方向。
- 粘贴文本或上传文件· 直接输入文本或拖放文件(最大 5 MB)。
- 复制结果· 输出即时更新。复制到剪贴板。
何时使用 Base64
使用它当:
- 您需要将小图像(5 KB 以下)直接嵌入到 HTML 或 CSS 中
- API 要求二进制数据作为文本字符串
- 您需要让二进制通过只支持文本的系统
不要使用它当:
- 文件很大 · Base64 增加 33% 的开销并阻止缓存
- 您需要安全性 · Base64 不是加密
- 您可以正常提供文件 · 对于超过几 KB 的内容,标准
<img src="photo.jpg">比 Base64 data URL 更高效
小贴士
- 仅用于小文件· 33% 的增幅很重要。100 KB 的图像在 Base64 中变成 133 KB,而且浏览器无法单独缓存它。
- 不要混淆编码和加密· Base64 对任何人都完全可逆。它不提供安全性。用它传输数据,而不是保护数据。
- 注意换行· 某些 Base64 实现每 76 字符添加一个换行(遵循 MIME 标准)。如果您将 Base64 粘到 JSON 或 URL 中,请确保它在一行上。
常见问题
Base64 会加密我的数据吗?
不会。Base64 是编码,而不是加密。任何人都能解码 Base64 字符串 · 它不提供安全性。如果您想保护数据,请使用真正的加密(AES、RSA 等)。
为什么 Base64 让文件变大?
Base64 编码将数据大小增加约 33%。三个二进制字节变为四个 Base64 字符。这是让二进制能作为文本安全传输的代价。
可以编码文件,不仅是文本吗?
可以。任何文件(图像、PDF、音频)都可编码为 Base64。这常用于将小图像作为 data URL 直接嵌入 HTML 或 CSS 中。
什么时候不要使用 Base64?
不要用于大文件。1 MB 的图像作为 Base64 文本会变成 1.33 MB,而且浏览器不能单独缓存它。对于超过几 KB 的任何内容,正常提供文件更高效。