z-base-32 编码解码

将文本、十六进制字节或文件转换为 z-base-32,也可以反向解码。它的字母表全部为小写,去掉了容易混淆的字符,输出也不需要填充。

完全在浏览器中运行,不会上传任何数据。

使用方法

  1. 选择“编码”把文本转换为 z-base-32,或选择“解码”把 z-base-32 还原为文本。
  2. 保持选择 z-base-32 变体,并确认“填充”已关闭,因为这种格式不使用填充。
  3. 输入或粘贴内容,也可以打开文件,结果会随输入实时更新。
  4. 复制结果,或将结果下载为文件。

什么是 z-base-32?

z-base-32 是 Zooko Wilcox-O'Hearn 设计的一种 Base32 编码,目标是让人更容易阅读、书写和口述。它的原理与 RFC 4648 Base32 相同:每个字符承载 5 位,5 个字节变成 8 个字符。真正的区别在于字母表:

ybndrfg8ejkmcpqxot1uwisza345h769

它全部使用小写,并去掉了 0、2、l 和 v,因为它们容易与 o、z、1 和 u 混淆。字符的顺序也经过重新排列,所以同样的字节编码成 z-base-32 后与标准 Base32 完全不同,也无法用 RFC 4648 解码器读取。

z-base-32 不使用填充,数据长度由字符串长度推算。规范还允许在双方约定长度的前提下编码不足整字节的位串,而本工具始终按整字节处理。

z-base-32 的应用

  • OpenPGP Web Key Directory(WKD)。为了在固定网址发布公钥,邮箱地址的本地部分会先转为小写再计算 SHA-1,20 字节的哈希值经 z-base-32 编码后成为 32 个字符的文件名。
  • ZRTP。通话双方为识别中间人攻击而朗读核对的短认证字符串(SAS),可以用 z-base-32 字母表以 Base32 形式呈现(RFC 6189)。
  • 闪电网络。lnd、Core Lightning 等节点软件以 z-base-32 字符串返回消息签名。

其他便于人工使用的编码还有 Crockford Base32(数字顺序不变,解码可容错)和 Base58(更短,但区分大小写),可以对比选择。

编码规格

字母表ybndrfg8ejkmcpqxot1uwisza345h769
输出体积每 5 字节输出 8 个字符(160%)
填充无
标准z-base-32(Zooko Wilcox-O'Hearn)
区分大小写否

编码示例

输入 (UTF-8)输出
Hello, World!jb1sa5dxfoofq551pt1nn
Base64.isejozg3jsgozg1ha
你好h164b3pfzw

常见问题

z-base-32 和 Base32 一样吗?

不一样。它与 RFC 4648 Base32 一样按 5 位分组,但字母表不同且顺序重排,也不使用填充。z-base-32 字符串必须用 z-base-32 解码器解码。

z-base-32 区分大小写吗?

字母表是小写的,输出也始终是小写。本工具解码时同样接受大写输入,会先转换为小写再解码。

字符串末尾带有等号怎么办?

z-base-32 本身不使用填充,但如果字符串末尾有等号,解码器会直接忽略。

如何得到 WKD 哈希?
WKD 需要对邮箱地址本地部分的小写形式计算 SHA-1,本工具不负责计算哈希。请在其他地方算出哈希值,以十六进制形式粘贴到这里再编码。GnuPG 也可以通过 --with-wkd-hash 选项直接显示 WKD 哈希。