极简工具箱

免费在线工具 · 本地计算 · 无需上传

Base64 编码原理与用途

把一张图片塞进 CSS、在 JSON 里传一段二进制、URL 里带一串看不懂的字符——背后多半是 Base64。它到底是什么、为什么体积会变大、以及为什么不能拿它当加密用,本文一次说明。

广告位(百度联盟)

一、Base64 解决什么问题

很多协议和文本格式(JSON、XML、邮件正文、URL)只能安全传输可打印的 ASCII 字符,二进制数据里的 0x00、换行、引号会破坏结构或直接被截断。Base64 的思路是:把任意二进制按 6 个 bit 一组重新切分,每组映射到一个可打印字符,于是二进制就变成了纯文本,可以安全地嵌进任何文本协议。

字符集共 64 个:A-Z、a-z、0-9,再加 + 和 /,末尾用 = 补齐。所以叫 Base64。

二、3 字节变 4 字符

一个字节 8 bit,6 和 8 的最小公倍数是 24:每 3 个字节(24 bit) 拆成 4 组 6 bit,每组查表得到一个字符。于是编码后体积固定膨胀约 4/3 ≈ 33%。

原文 3 字节:  01001101  01100001  01101110  ("Man")
切成 4 组 6bit: 010011 010110 000101 101110
查表得:        T      W      F      u
Base64:        TWFu

当原始数据长度不是 3 的倍数时,末尾补 0 凑够 6 bit,并在结果后加 1 或 2 个 = 表示补了几个字节。解码时看到 = 就知道末尾的 0 是填充、不属于原数据。

三、它不是加密

Base64 是编码,没有密钥、算法完全公开,任何人都能瞬间还原原文。把密码、token 用 Base64 包一层就以为安全,是典型误解——它只解决「能不能安全放在文本里」,不解决「能不能被别人看懂」。真正需要保密要用 AES 等加密算法(可用 AES 加解密 在本地试验)。

四、常见变体与坑

五、典型用途

邮件附件(MIME)、JSON 里传二进制、HTTP Basic 认证头、证书与密钥文本(PEM)、前端把本地图片预览成 Data URL、以及各类「把二进制塞进文本字段」的接口。反过来,把接口返回的 Base64 还原成文件,也是常见需求。

本站 Base64 编解码 处理文本,图片转 Base64 处理本地图片,二者都在浏览器里完成,图片不会上传到服务器——处理含人脸、证件、截图的文件时这点很重要。

小结

记住四个数字:64 个字符表、3 字节进 4 字符出、体积 +33%、填充用 =。再记住一句:Base64 是编码不是加密,别拿它保护秘密。

本文相关工具(本地计算,无需上传)

更多使用教程