Base64 不是加密
Base64 只是用字母、数字和几个符号来表示任意字节。它的用途是让二进制数据能走那些只允许文本通过的通道,比如邮件正文、JSON 字段、HTML 属性。
它没有密钥,也没有秘密,还原它不需要任何东西。把密码转成 Base64 放进配置文件并不算藏起来,只是多了一道麻烦。真要藏,就加密,或者交给密钥管理服务。
什么时候用 URL-safe
标准 Base64 会用到 + 和 /。这两个字符在网址里另有含义,直接塞进查询串,值就会被弄坏,末尾的 = 填充也一样。
URL-safe 就是把这三处收拾干净的变体:+ 换成 -,/ 换成 _,去掉填充。JWT 的三段用的正是这种编码,OAuth 授权码和要放进文件名的值通常也是。值要进网址就用 URL-safe,其他场合用标准的。
长度会变长
Base64 把 3 个字节变成 4 个字符,所以结果比原文长约 33%。在这之前还要先做 UTF-8 编码:一个汉字是 3 个字节,十个字的中文句子就是 30 字节,转成 Base64 后是 40 个字符。
把图片以 data: URL 内嵌进 HTML 时,这个增幅就有分量了。小图标省下一次请求,划算;整张照片嵌进去,页面就得连着这一份体积一起加载,首屏因此变慢。
解码失败时
出现“这不是 Base64”,多半是字符串被截断,或者前后带上了引号和换行。这个工具会自动去掉空白和换行,也接受 URL-safe 字符,如果还是不行,那就是字符串本身不完整。
“解出来的是二进制而不是文本”表示解码成功了,但结果不是可读文字。如果这段值本来就是图片或压缩包转成的 Base64,那这是正常反应,不是错误。