跳转到正文

Base32、Base58 与 Ascii85 转换工具

将文本或原始字节编码为 Base32、Base58、Ascii85 或 Z85,或将其中任一编码解码回来,各编码使用其自身的字母表和填充规则。运算表会展示前几个字节如何变为字符。Base64 由文本编码与解码工具涵盖。在浏览器中运行,不上传任何内容。

模式

字母 A–Z 与数字 2–7,每个字符承载五个比特,并以 = 填充至八个字符的倍数。解码时大小写无关。

运算过程

字节被写成比特并切分为五比特一组。每组是 0 到 31 之间的数字,并选出一个字符。

比特值字符
010019J
000011B
1001018S
1011022W
1100024Y
11011273
000113D
0111115P
001015F
1000016Q
1000016Q
001015F
0111014O
11011273
11011273
1001018S

显示前 16 行。

如何使用 Base 编码转换工具

  1. 1. 选择编码方式。 Base32、使用扩展十六进制字母表的 Base32、使用比特币字母表的 Base58、Adobe 使用的 Ascii85,或 Z85。菜单下方的说明会描述您所选的编码。
  2. 2. 说明数据类型。 文本按 UTF-8 字节读取。十六进制字节则允许您编码任意二进制数据,例如密钥,只需将其输入为成对的字符,如 86 4f d2 6f。
  3. 3. 编码或解码。 编码会生成由该编码字母表组成的文本。解码则将其还原为字节,并以文本或十六进制形式显示。输入中的空格和换行会被忽略。
  4. 4. 检查选项。 Base32 可选择是否带 = 填充。Ascii85 可以用 <~ 和 ~> 包裹,并可将四个零字节写作 z。

这些编码的用途

它们都不是加密。每种编码都将可能不可打印的字节转换为可以粘贴到电子邮件、网址、二维码或配置文件中的文本,而任何知道编码名称的人都能将其还原。它们的区别在于所用的字母表,以及结果比数据长多少。

编码字符数长度与字节数之比Hello, World 变为
Base32 (RFC 4648)328 ÷ 5 倍长JBSWY3DPFQQFO33SNRSA====
Base32 扩展十六进制328 ÷ 5 倍长91IMOR3F5GG5ERRIDHI0====
Base58 (比特币)58约 1.37 倍2NEpo7TZsLBYdvo5V
Ascii85 (Adobe)855 ÷ 4 倍长<~87cURD_*#4DfTZ)~>
Z85 (ZeroMQ)855 ÷ 4 倍长nm=QNz.92jz/PV8

Base32

Base32 将字节切分为 5 位一组,并把每组写成 32 个字符之一,即 A–Z 与 2–7。它只使用数字 2 至 7,省去了与 O、I、B 相似的 0、1 和 8,并忽略字母大小写,因此便于朗读或输入。填充符 = 将长度补齐为八的倍数。RFC 4648 给出了测试向量,例如 foobar → MZXW6YTBOI======。身份验证应用的密钥和 Tor 洋葱地址都使用 Base32。

Base58

Base58 将整个输入视为一个大整数,并以 58 进制写出,省去了 0、O、I、l 以及符号 + 和 /,使结果可以通过双击完整选中复制,也不易看错。每个前导零字节写作第一个字符 1。比特币字母表只是多种 Base58 字母表之一;Ripple 和 Flickr 使用的字母表对字符的排序不同,因此请确认您的数据使用的是哪一种。比特币地址还会在其上增加校验和与版本字节,这一方案称为 Base58Check,本工具不计算它。

Ascii85 与 Z85

两者都将四个字节读作一个 32 位数字,并写成五个 base-85 数字,因此只比数据长 25%。Adobe 的 Ascii85 用于 PostScript 和 PDF,使用从 ! 到 u 的字符,将四个零字节简写为 z,并通常以 <~ 和 ~> 包裹数据。最后一组为一到三个字节时,输出的字符比字节多一个。Z85 定义于 ZeroMQ 的 RFC 32,使用一套不同的 85 字符字母表,这套字母表的选择是为了避免源代码中的引号和反斜杠;它没有 z 简写,也没有短的末尾组,因此其输入必须是四个字节的整数倍。其规范中的示例是八个字节 86 4f d2 6f b5 59 f7 5b,编码为 HelloWorld。还存在其他 base-85 字母表,例如 Git 所用的 RFC 1924,因此请让字母表与其来源相符。

常见问题

Base32 或 Base58 是加密吗?
不是。它们是编码:任何人都可以将其还原,因为字母表和规则都是公开的。它们的作用是使数据可打印、更便于复制,而不是保密。
为什么 Base58 省略了一些字符?
为了避免形近字符和符号。它省去了 0(数字零)、O(大写字母 O)、I(大写字母 I)和 l(小写字母 L),这些字符在许多字体中容易混淆;还省去了 + 和 /,它们会破坏双击选中。因此剩下 58 个字符。
如何解码 Base32 字符串?
选择 Base32,切换到解码,然后粘贴字符串。大小写无关紧要,末尾的 = 符号可有可无。如果出现指出某些字符的错误,字符串很可能是 Base32 扩展十六进制、Base64 或其他编码。
Ascii85 与 Z85 有何区别?
两者都用五个字符表示四个字节,但字母表不同。Ascii85 使用从 ! 到 u 的字符,有 z 简写表示零,并可能以 <~ 和 ~> 包裹。Z85 使用对源代码安全的字母表,且没有简写。
为什么 Z85 提示我需要四个字节的整数倍?
Z85 规范未定义填充。其数据必须是 4 字节组的整数倍,其文本也必须是五个字符的整数倍。请自行补足字节,或使用能处理末尾短组的 Ascii85。
如何编码 Base64 字符串?
本页不处理 Base64。文本编码与解码工具可以在文本与 Base64、网址及 HTML 实体之间相互转换,而 XOR 密码页面可以将十六进制字节显示为 Base64。

相关工具

编码与密码中的更多工具