🔤 Base32 编码/解码

RFC4648 标准 · Crockford · z-base-32 · 中文 UTF-8 支持

输出含 = 补位
📝 输入内容
等待输入...
字符: 0 行: 0
📤 处理结果
等待处理...
字符: 0 膨胀率: -

什么是 Base32 编码?

Base32 使用 32 个可打印 ASCII 字符(标准字母表为大写字母 A~Z 与数字 2~7)对任意字节数据进行编码:把数据的二进制串按 5 个比特一组切分,每组转成十进制后对应字母表中的一个字符。由于数据以字节(8 bit)为单位而分组为 5 bit,编码总长是 40 bit(5 与 8 的最小公倍数)的倍数,不足时在末尾用 = 补位(每个 = 对应 5 个比特),因此编码后长度约为原来的 8/5 倍(160%)。

Base32 与 Base64 的区别

对比项Base32Base64
膨胀率160%(8/5)约 133%(4/3)
字母表A-Z、2-7A-Z、a-z、0-9、+、/
大小写敏感否(全大写)
URL 安全好(无 + /)需 URL 变体替换 + /
典型场景TOTP 两步验证密钥、DNS 记录、文件名邮件附件、网页内嵌图片、HTTP Basic

Base32 牺牲了约 27% 的空间换取「不区分大小写、易朗读、易人工抄写、不易混淆 0/O 与 1/I」的特性,适合对人类可读性要求高的场景。

三种字母表一览

  • 标准 RFC4648ABCDEFGHIJKLMNOPQRSTUVWXYZ234567 —— 最通用,TOTP 谷歌验证器密钥即采用它。
  • Crockford0123456789ABCDEFGHJKMNPQRSTVWXYZ —— 去掉 I、L、O、U 避免与 1、0 混淆,解码时把 0→O、1→I、8→B 容错。
  • z-base-32ybndrfg8ejkmcpqxot1uwisza345h769 —— 全小写,选取易于区分和书写的字符,常用于 P2P 与人机转录场景。

编码原理示例

以单字节字符 % 为例:其二进制为 100101,补足 8 位得 00100101;按 5 bit 切分为 00100 和 101,后者不足 5 位末尾补 0 得 10100;查表分别对应 E 和 U;凑满 40 bit 还差 30 bit(6 组),故输出 EU======。解码则是逆过程:去掉 = 后把每个字符还原成 5 bit 二进制串,从头按 8 bit 切分得到原始字节。

常见问题

  • = 可以去掉吗?多数场景可以(信息完整保留在有效字符里),但在 URL 中使用时必须去掉;本工具解码时自动忽略所有 =。
  • 支持中文吗?支持。中文先按 UTF-8 编码为字节流再进行 Base32 编码,解码时按 UTF-8 还原。
  • 解不开报错?请确认选择了与编码时相同的字母表;输入中的空格与换行会被自动忽略,小写输入自动兼容。

使用说明与小贴士

选择「编码」或「解码」模式并粘贴内容即实时出结果;点击「⇄ 交换」把结果送回输入框反向验证。两步验证(2FA)添加密钥时看到的 JBSWY3DPEHPK3PXP 这类字符串就是标准 Base32。所有转换均在浏览器本地完成,不会上传任何数据。