Base64 详解手册:原理、陷阱与二进制数据优化
由 ToolOrbit 编辑团队撰写与维护
每篇指南都会围绕实际工作流准确性进行检查,并连接到可直接应用的浏览器工具。
Related tools
Use these ToolOrbit utilities to apply the workflow from this article.
由 ToolOrbit 编辑团队撰写与维护
每篇指南都会围绕实际工作流准确性进行检查,并连接到可直接应用的浏览器工具。
Use these ToolOrbit utilities to apply the workflow from this article.
在软件开发领域,Base64 可能是被误解最深的技术黑话之一。无数刚刚入门的新手开发者经常把它与“加密(Encryption)”混为一谈。然而它的真实面目非常纯粹,却又是整个现代万维网赖以生存不可或缺的底层基石。
首先要明确:Base64 绝不是加密,它仅仅是一种编码翻译映射(Encoding)。它的诞生是为了解决一个非常古老的痛点难题:如何安全地将极其狂野不可控的纯二进制串流数据(例如一段压缩的视频录像、一张带 Alpha 通道的精美 PNG 透明图片,或者一段底层的操作系统驱动机器码)直接强行塞入、穿透并且安全传输流转在那些诞生之初只被设计出且只能用来承载运输普通并且极其脆弱简单纯英文字母文本(ASCII)的古老网络应用协议(例如极其古老的电子邮件 SMTP 协议或者 HTTP 网址参数传输协议)之中。 如果没有 Base64,当你试图把图片生硬塞进 HTML 里的那一刻,解析器会把二进制里那些杂乱无章的字节错认为终止符或者换行等不可见控制字符,瞬间导致整个文件架构错乱乱码,引发灾难级崩溃碎裂。
Base64 对二进制大刀阔斧的重塑原理其实极具极客极简美感:它就像是在切蛋糕一样,把源文件的每 3 个字节(共 24 个比特位)强行劈开,重新组合成 4 组(每组仅分得 6 个比特位)。这 6 个比特位最多只能表示 0 到 63 的小数字,于是正好可以完美映射对应到 64 个极其安全的、你在任何键盘上都能敲出来绝对安全的纯净可见字符库(大写 A-Z,小写 a-z,数字 0-9,附加上以及加号 + 和斜杠 /)。
正因为把 3 份切成了 4 份, Base64 编码从物理法则上注定会导致文件的原始体积原力膨胀暴涨整整约 33% 的大小。
这也是为什么高级前端绝对不会通过 data:image/png;base64,... 这种手段把体积几十兆超大轮播图嵌进由于加载阻塞严重的 CSS 样式源码表中的原因。这种极具代价的手法,应当仅仅保留给那些极小且极度关键的首屏矢量小图标去独占专享。
Base64 就是整个赛博世界中无所不能的超级万能粘合剂胶带,允许我们极为任性且不可思议地安全地将一切二进制荷载疯狂偷渡穿透那纯文本网关防线网络世界网关通道。但请永远刻下这句警告:它不提供一丝一毫哪怕丁点的任何密码学维度的加密安全防护!哪怕是一只刚刚学步走过键盘会按 ctrl+c 的小猫也能在半秒内把它还原。用它来掩饰隐藏密码无异于把房门钥匙挂在一块透明玻璃门的把手上。