Base32 编码解码
RFC 4648 与 Crockford 两种字母表的 Base32 编解码,解码宽容易混字符。
Base64 的 +/ 字符在 URL、文件名里容易出事,抄写时 O/0、l/1 也分不清。Base32 用 32 个无歧义字符(A-Z 与 2-7)解决这两个问题:大小写不敏感、无易混字符,代价是体积膨胀 60%。它活在两个地方:两步验证的密钥(Google Authenticator 的 otpauth 约定)和需要人工抄写的数据编码。
本工具支持 RFC 4648 标准与 Crockford 变体——后者干脆去掉 I/L/O/U 四个字母,并把 0、1 映射回 O、I 的位置自动纠正,适合人工转抄场景。解码是宽容的:大小写混排、空格与连字符分隔(PEM 风格)、尾部 = 缺失都能正确还原。
RFC 4648 与 Crockford 的区别
标准 Base32 字母表是 A-Z2-7,用 = 补齐到 8 的倍数;Crockford 把字母表重排为 0-9A-Z 并剔除 I/L/O/U,不用填充符,0/O 和 1/I/L 在解码时视为同一字符。两步验证密钥用标准变体;需要人读人抄的场景(订单号、邀请码)用 Crockford 更稳。
为什么体积膨胀 60%
Base32 每个字符携带 5 比特(Base64 是 6 比特),同样的字节流需要更多字符:8 字节变成 13 个字符左右。膨胀换来的是 32 个字符的全「可发音、可手写」集合——这是为人工信道付的税。
常见问题
- 解码时报非法字符怎么办?
- 标准模式下字母表只有 A-Z 与 2-7:出现 0、1、8、9 说明输入是 Crockford 或 Base58 等其他编码,切换字母表再试;本工具的 Crockford 解码会自动纠正 0→O、1→I。
- 支持中文吗?
- 支持。文本先按 UTF-8 编码为字节再做 Base32,中英文与 emoji 都可正确往返;解码后按 UTF-8 还原为文本。
- 和两步验证密钥是什么关系?
- 验证器 App 里那串大写字母数字就是标准 Base32 编码的密钥字节。本站的 TOTP 工具会自动用 Base32 解码密钥后计算口令。