> zeromq | 源码安全 | 高效 <
// Z85 —— ZeroMQ 的 Base85 变体,适合安全嵌入到源码和 JSON 中
[SOURCE-SAFE]
对源码友好
不包含引号、反斜杠和空白等敏感字符,适合直接嵌入 C/C++ 字符串、配置文件或 JSON 字段。
[EFFICIENT]
信息密度高
按 4 字节 → 5 字符 的比例进行编码,大约 25% 的体积膨胀,相比 Base64(约 33%)更节省空间。
[ZEROMQ]
ZeroMQ 标准
是 ZeroMQ 在文本协议中封装二进制数据时使用的官方 Base85 编码方案。
>> 技术说明
Z85 的工作原理:
Z85 使用 85 个可打印 ASCII 字符,将每 4 个字节编码成 5 个字符。字母表刻意避开在 C/C++ 字符串与 JSON 中必须转义的字符,从而降低手动转义和 bug 的风险。
示例:
"Hello" → nm=QNz.92
为什么使用 Z85:
- >希望把二进制数据直接嵌入到源码或配置文件中
- >希望 JSON、YAML、XML 等文本格式中尽量少写转义字符
- >希望相对 Base64 获得更紧凑的文本表示
- >正在使用 ZeroMQ 或与其协议集成
- >希望在文本 API 中统一二进制 payload 的编码方式
>> 常见问题
什么是 Z85 编码?
Z85 是 ZeroMQ 定义的一种 Base85 编码格式,使用 85 个精心挑选的 ASCII 可打印字符,避免了绝大多数在代码和 JSON 中需要转义的字符。
Z85 和普通 Base85 有什么区别?
Z85 采用的字符表不同于其他 Base85 变体,去掉了引号、反斜杠、空格等不利于在源码中直接使用的符号。
在什么场景下适合用 Z85?
适合用在库示例代码、配置文件、文本协议负载(尤其是 ZeroMQ 消息)等需要将二进制嵌入到文本中的场景。
Z85 对数据长度有什么要求?
Z85 要求原始二进制长度是 4 字节的倍数。编码过程中可以通过补零或填充来满足,但解码时必须按该约束还原。