解码一个简单的词
SGVsbG8gV29ybGQ=
Hello World
末尾的 = 是填充,因为 Hello World 有 11 个字节,不是 3 的倍数。解码时总能正确去掉它。
即时编码或解码 Base64 字符串和文件。
最后更新
Coddy 让你在浏览器里编写真实代码来学习:互动课程、即时反馈,卡住时还有 AI 帮忙。
Base64 是一种编码方案,用 64 个可打印字符来表示二进制数据。只要纯文本系统需要传输字节,开发者就会用到它:嵌入 HTML 的小图片、令牌、电子邮件附件、data URL、日志中可复制粘贴的密钥,以及存储二进制数据块的 JSON 字段。
Base64 是编码,不是加密。解码一个 Base64 字符串通常能立刻看到原始内容,所以绝不能把它当作安全屏障。除非在编码之前就已经加密,否则 Base64 里的任何内容实际上都是公开的。
在底层,Base64 取 3 个字节(24 位),把它们改写成固定的 64 字符字母表(A 到 Z、a 到 z、0 到 9、+、/)中的 4 个字符。当输入长度不是 3 的倍数时,编码器会在末尾加一个或两个 = 作为填充。这就是 Base64 字符串常常以 = 结尾的原因。
= 这样的填充字符用来补齐最后一组 4 个字符,在很多 Base64 字符串中都很正常。+ 和 /)和 Base64URL(使用 - 和 _,可以安全地用在 URL 和 JWT 中)。如果你有纯文本或文件,想得到 Base64 输出,选择“编码”。如果你有 Base64 字符串,想还原原始内容,选择“解码”。
把字符串粘贴到文本框中,或把文件(图片、PDF,什么都行)拖到放置区域。文件会被转换成 data: URL,可以直接嵌入 HTML 或 CSS。
编码输出是 Base64 字符串。解码输出是原始文本;如果输入是文件,还原出的字节会以下载链接的形式显示。
点击复制按钮,把结果复制到剪贴板。一切都在你的浏览器中运行,输入内容不会离开你的电脑。
开始使用 Base64 后会反复遇到的几个概念,由 RFC 4648 定义。
| 要素 | 含义 | 示例 |
|---|---|---|
| 字母表 | 标准 Base64 使用的 64 个字符 | A-Z, a-z, 0-9, +, / |
| URL 安全字母表 | 用于 JWT 和 URL | A-Z, a-z, 0-9, -, _ |
| 填充 | 长度不是 3 的倍数时,补齐最后一组 | = 或 == |
| 分组大小 | 每个编码块的字节数 → 4 个输出字符 | 3 字节 → 4 个字符 |
| 长度增长 | 输出比输入大约多 33% | 100 B → 136 个字符 |
| Data URL | 在 HTML/CSS 中内嵌文件 | data:image/png;base64,... |
SGVsbG8gV29ybGQ=
Hello World
末尾的 = 是填充,因为 Hello World 有 11 个字节,不是 3 的倍数。解码时总能正确去掉它。
{"role":"student","active":true}eyJyb2xlIjoic3R1ZGVudCIsImFjdGl2ZSI6dHJ1ZX0=
JWT 令牌的每一段都是这样编码的,所以 JWT 的载荷通常以 eyJ 开头,这正是 {" 的 Base64 形式。
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgAAIAAAUAAen8GVAAAAAASUVORK5CYII=
前缀声明了媒体类型(image/png)和编码方式(base64)。逗号后面的所有内容就是文件内容。适合随页面一起加载的小图片。
Pj4/Pyc+Pg==
Pj4_Pyc-Pg
URL 安全的 Base64 把 + 换成 -,把 / 换成 _,这样值可以直接放进 URL,无需再转义。JWT 使用的就是这个变体。
= 填充,然后把结果交给要求填充的严格解码器。(URL 安全解码器通常接受缺少填充,标准解码器可能不接受。)Base64 是一种用 64 字符字母表把二进制数据表示成可打印文本的编码。只要字节需要经过纯文本系统传输,就会用到它:API、JSON、JWT、电子邮件、data URL。
= 作为填充。atob()、Node.js 中的 Buffer.from(str, 'base64')、Python 中的 base64.b64decode()。不安全。Base64 是编码,不是加密。它是为表示和传输数据设计的,而不是为了保密。如果需要保密,先加密数据,再对密文进行 Base64 编码。
= 结尾?= 是填充。Base64 每 3 个输入字节输出 4 个字符。当输入长度不是 3 的倍数时,会加上一个或两个 =,让编码后的长度保持为 4 的倍数。data:image/png;base64,... 这样的 URL,图片就能直接嵌入 HTML、CSS 或 JSON,无需额外的网络请求。