Base64
Base64 是一种把任意二进制数据转换成 ASCII 可打印字符的编码方式(不是加密)。它从 A-Z、a-z、0-9 以及 +、/ 共 64 个字符中取值,因此得名。核心用途是让图片、文件等原始字节能安全地穿过只允许文本的通道,比如邮件(MIME)、JSON、HTML/CSS 里的 data: URI,或 HTTP 头。
工作原理很简单:每 3 个字节(24 位)切成 4 组、每组 6 位,映射为一个字符;当末尾不足 3 字节时用 = 补齐。因为 3 字节变成了 4 字符,编码后体积会增加约 33%。它是完全可逆的——任何人都能一键解回原文。
常见误区与要点:
常见问题
Base64 是加密吗?能用来保护密码吗?
不是。它只是可逆的编码,任何人都能直接解码还原,不提供任何保密性。要保护数据请用真正的加密(如 AES)或哈希(如 bcrypt)。
为什么数据经过 Base64 后体积变大了?
因为每 3 个字节被编码成 4 个字符,理论上膨胀约 33%(再加上换行和补位符号会略多)。这是用体积换「纯文本可传输」的代价。
为什么我的 Base64 字符串放进 URL 就出错了?
标准 Base64 含有 +、/、= 这些在 URL 里有特殊含义的字符。应改用 URL-safe 变体,把 + 换成 -、/ 换成 _,并去掉或转义结尾的 =,JWT 用的就是这种。