Base64 是什么?编码原理与在线转换方法
接口文档里看到一串 aGVsbG8gd29ybGQ=,图片的 data URL 以 data:image/png;base64, 开头,邮件附件里躺着大段看不懂的字符——这些都是 Base64。它无处不在,但很多人误以为它是加密。
本文用大白话讲清:Base64 是什么、为什么需要它、怎么手动换算,文末有支持中文的免费转换工具。
一句话:Base64 不是加密,是「翻译」
加密需要密钥,没有密钥解不开;Base64 的规则是公开的,任何人拿到编码后的字符串都能解回去。它做的事情只有一个:把任意二进制数据「翻译」成 64 个可打印字符(A-Z、a-z、0-9、+、/),外加 = 补位。
为什么需要翻译?因为很多只认文本的场合传不了二进制:早期的邮件系统、URL 参数、JSON 接口、HTML 里的内嵌图片。Base64 就是二进制在这些场合的「普通话」。
原理:3 个字节变 4 个字符
二进制数据每 3 个字节(24 位)为一组,切成 4 个 6 位的小块,每个小块对应编码表中的一个字符。3 字节变 4 字符,所以体积膨胀约 33%。
举个具体例子:hello 是 5 个字节。先取前 3 个字节 hel → 编码成 aGVs,再取剩下 2 个字节 lo → 编码成 bG8=(不足 3 字节用 = 补位)。连起来就是 aGVsbG8=。解码就是反向操作。
中文呢?中文先按 UTF-8 编成字节(一个汉字 3 字节),再整体做 Base64。所以「你好」编码后是 5L2g5aW9,比英文长得多——这是 UTF-8 的字节数决定的,不是工具 bug。
打开免费的「Base64 编解码」工具,本地处理、不用注册。
Base64 的典型用途
一是 data URL:<img src="data:image/png;base64,iVBOR..."> 把小图标直接嵌进 HTML/CSS,省一次 HTTP 请求。二是 HTTP Basic 认证:Authorization 头里的用户名密码就是 Base64(注意:只是编码不算加密,必须配合 HTTPS)。三是接口传文件:JSON 传不了二进制,小文件转 Base64 塞进 JSON 是常见做法。
- 确定方向:原文转 Base64 选「编码」,Base64 转原文选「解码」。
- 粘贴内容到输入框(中文直接粘贴,工具会自动按 UTF-8 处理)。
- 点击转换,检查输出框结果。
- 解码时如果报错,先检查字符串里有没有多余的空格、换行或中文标点。
新手常踩的两个坑
坑一:把 Base64 当加密用。token、密码用 Base64「加密」后放在前端,等于裸奔——任何人打开控制台就能解。需要保密请用真正的加密(如 AES)或直接走 HTTPS。坑二:中文乱码。用了不支持 UTF-8 的老工具,中文编码后解出来是乱码。转换工具一定要选明确支持 UTF-8 的,比如快工具箱的 Base64 工具,编码解码全程按 UTF-8 处理。