Base64 不是加密,是把二进制数据用 64 个可打印字符表示。它解决的问题是: 邮件协议、URL、JSON 这些通道只认文本,塞不进原始字节。
Base64 转换工具:文本双向转换,支持 URL-safe 变体,本地处理。 不要把密码或私钥贴进任何在线编解码网站——Base64 是可逆的,贴过去就等于明文贴过去。
Base64 编码 / 解码 →# Linux / Mac
echo -n "hello" | base64
echo "aGVsbG8=" | base64 -d
# 图片转 Base64(用于 data URI)
base64 -i logo.png
# Windows PowerShell
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("hello"))
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("aGVsbG8="))
echo -n 里的 -n 不能省——默认 echo 会追加换行,编码结果会多出 Cg==。
# Python
import base64
base64.b64encode(b'hello') # 编码
base64.urlsafe_b64encode(b'hello') # URL-safe(+/ 换成 -_)
base64.b64decode('aGVsbG8=') # 解码
# JavaScript(浏览器)
btoa('hello'); atob('aGVsbG8=');
# 中文要先转 UTF-8:
btoa(String.fromCharCode(...new TextEncoder().encode('中文')))
Base64 用 4 个字符表示 3 个字节,4/3 ≈ 1.33。所以 Base64 后的图片比原图大三分之一,
而且不能用于大幅优化传输——图片该用二进制传输还是用二进制。
另外 Base64 让 gzip 压缩率变差,把图片塞进 JSON 里常常让接口响应体积翻好几倍。