Base32 编码器和解码器

Base32 使用 32 个字符表示二进制数据 — 数字 2-7 和 26 个大写字母,不包含 0/O 或 1/I,以避免读错。这让它非常适合任何需要人类输入或朗读的内容:双因素 TOTP 密钥、兑换码、大小写不敏感的标识符。这个工具会把二进制或文本编码为 Base32,也能解码回来,遵循 RFC 4648 并支持可选填充。

如何编码或解码 Base32

  1. 1

    粘贴文本或上传文件

    输入会按字节处理。文本输入默认解释为 UTF-8。

  2. 2

    选择方向

    编码会把原始字节变成 Base32 字符串;解码会恢复字节。

  3. 3

    配置填充

    RFC 4648 规定用 `=` 填充到长度为 8 的倍数。TOTP 密钥和紧凑令牌可关闭。

  4. 4

    复制结果

    编码输出为大写,并按你的设置带或不带填充。

RFC 4648 字母表

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 2 3 4 5 6 7

没有 0,没有 1,没有 8,没有 9。每个字符编码 5 位(2^5 = 32),因此 5 个输入字节会变成 8 个输出字符。

示例

编码 ASCII 字符串 foo(字节 0x66 0x6F 0x6F = 01100110 01101111 01101111):

  1. 分成 5 位一组:01100 11001 10111 10110 1111(最后一组进行填充)
  2. 映射到字母表:M Z X W 6
  3. 加上 === 填充凑足 8 个字符:MZXW6===

填充和长度规则

输入字节数 输出长度 填充
1 8 ======
2 8 ====
3 8 ===
4 8 =
5 8 (无)

RFC 4648 之外的变体

  • Base32 Hex — 字母表 0-9A-V,DNSSEC 中的 NSEC3 使用。
  • Crockford’s Base32 — 针对人工输入优化的字母表;解码时把 O0I/L1。ULID 和一些许可证密钥使用。

这个工具默认使用标准 RFC 4648。

TOTP 密钥

Google Authenticator 和每个现代 2FA 应用使用的 otpauth:// URI 格式,会把共享密钥编码为不带填充的 Base32。当你为 “My Service” 扫描二维码时,secret= 参数就是 Base32 字符串。用这个工具解码它,就能查看 HMAC 使用的原始字节。

常见问题

Base32 大小写不敏感,并避开容易混淆的字符,这对任何人类要读取或输入的内容都很重要。Base64 更紧凑(同样的字节用更少字符),但需要区分 Il0O,手写和小字号时容易失败。

RFC 4648 说需要,但多数实际使用方(TOTP 应用、ULID 库、DNSSEC 解析器)都接受不带填充的输入。这个工具允许你选择;粘贴任一形式通常都能解码。

标准 Base32 没有 0、1、8 或 9,并且始终是大写。如果你的输入含有这些字符,它可能是 Crockford 变体或 base32hex,而不是 RFC 4648。清理输入或选择正确变体。

不会。编码和解码都在浏览器中完成。输入和结果都不会离开你的机器。

相关工具