RunToolz iconRunToolz
Welcome to RunToolz!
Base64编码开发者工具

什么是Base64,为什么它总是出现

代码里那些奇怪的文本字符串不是乱码。了解Base64编码的工作原理、常见应用场景,以及如何在API调试和数据传输中正确使用它。

RunToolz Team2026年1月5日4 min read

你在调试一个API。响应里的某个地方,你看到这个:

SGVsbG8gV29ybGQh

或者你在查看邮件的原始源码,发现大块看起来像键盘乱敲的文本。或者你的CSS里有个背景图片以data:image/png;base64,开头,后面跟着一堵字符墙。

那就是Base64。一旦你开始留意,它无处不在。

Base64到底是什么

二进制数据——图片、文件、任何不是纯文本的东西——跟专为文本设计的系统玩不到一起。电子邮件是为ASCII字符构建的。URL有字符集限制。JSON处理不了原始二进制。

Base64把二进制数据转换成由64个"安全"字符组成的字符串:A-Z、a-z、0-9、+和/。任何二进制文件都变成了一个文本字符串,传递给纯文本系统时不会出错。

它不是加密。不是压缩。只是编码——用另一种方式表示相同的数据。

想亲自试试吗?Base64编码/解码

你会在哪里看到它

邮件附件。 当你通过邮件发送PDF时,它会被Base64编码,作为文本传输,然后在另一端解码。

Data URI。 那个data:image/png;base64,...语法直接在HTML或CSS中嵌入图片。不需要单独的文件请求。

API认证。 基本认证将username:password作为Base64字符串发送。(这就是为什么HTTP上的基本认证不安全——Base64不是加密。)

JWT。 JSON Web Token是三个用点连接的Base64编码的JSON对象。

JSON中的二进制数据。 JSON不能包含原始字节,所以二进制先被Base64编码。

编码 vs 加密

人们总是搞混这两个。

Base64编码: 任何人都能逆向。不需要密钥。不安全。只是重新格式化。

加密: 只能用正确的密钥逆向。真正安全。

如果你不需要密码就能解码,那就不是加密。Base64只能"隐藏"数据不让那些不知道Base64是什么的人看到——而真正想读它的人都知道。

别把密码存成Base64。别假设API里的Base64数据是私密的。它只是看起来奇怪的文本。

大小问题

Base64会使数据大小增加约33%。一个100KB的图片Base64编码后变成~133KB。

这对data URI很重要。在CSS中把大图片嵌入为Base64会让文件更大,而且不能单独缓存。适合小图标。不适合首屏大图。

实际用途

调试。 在API响应中看到Base64?解码它看看里面是什么。

嵌入小图片。 1-2KB以下的图标通常值得嵌入为data URI,以节省HTTP请求。

通过文本通道传递二进制。 需要在JSON中包含文件内容?Base64编码它们。

读取JWT。 解码每个部分以查看header、payload,了解token包含哪些声明。

想亲自试试吗?图片转Base64

Base64不复杂。它只是把任何数据变成文本字符串的一种方法。认识它,需要时解码,并且知道它不提供任何安全性——只是兼容性。