3️⃣ Base32编解码

Base32编码解码(RFC 4648)。使用A-Z和2-7以大小写不敏感的方式表示二进制数据。

关于Base32

Base32 是 RFC 4648 定义的二进制到文本编码方案。它使用由 A-Z 和 2-7 组成的 32 字符字母表表示二进制数据,该字母表大小写不敏感,并避免了视觉上易混的字符(0、1、8、9、O、I)。每 5 字节输入对应 8 字符输出,并用 '=' 填充到 8 字符的倍数。本工具完全在浏览器中运行——不会上传任何数据。

工作原理

  • 编码 —— 字节按 40 位(5 字节)块分组,再拆分为八个 5 位组,每组映射到字母表 A-Z2-7 中的一个字符。
  • 解码 —— 每个字符转回 5 位值,再重新组装为字节;填充字符 '=' 被忽略。
  • 输出始终是 8 字符的倍数;'=' 用于填充剩余位置。
  • 编码作用于原始字节。UTF-8 多字节字符会生成更长的 Base32 输出。

使用场景

  • 为双因素认证应用编码 TOTP/HOTP 密钥。
  • 在大小写不敏感的通道(邮件、二维码、DNS)中传输二进制数据。
  • 以适合电话朗读或手动输入的格式存储密钥。
  • 为随机字节生成简短、对人友好的表示。

常见问题

为什么字母表中没有 0、1、8、9、O、I? 这些字符在阅读或输入时容易与其他字符混淆。Base32 的 32 字符字母表有意避免它们。

为什么编码后的输出比输入长? Base32 将数据扩展到原始大小的约 160%(每 5 字节对应 8 字符),再加上填充。

结尾的 '=' 是什么? 填充字符用于将输出对齐到 8 字符的倍数。RFC 4648 要求它们存在,但解码时会被忽略。

这个工具会上传我的文本吗? 不会。所有编码解码都在本地浏览器中完成。