无需登录 数据私有 本地保存

Crockford Base32编码器 - 人类友好格式

13
0
0
0

Crockford Base32 编码器

人类友好格式 · 防混淆字符集 · 可选校验符号 · Douglas Crockford 设计

快捷示例:

常见问题与知识点

什么是 Crockford Base32?

Crockford Base32 是由 Douglas Crockford 设计的一种 Base32 编码变体。它使用 32 个精心挑选的字符(0123456789ABCDEFGHJKMNPQRSTVWXYZ),排除了容易混淆的 I、L、O、U,使编码结果更适合人类阅读和手动输入。广泛应用于短链接、产品序列号、用户ID等场景。

与标准 Base32(RFC 4648)有什么区别?

标准 Base32 使用 A-Z 和 2-7 共32个字符,而 Crockford Base32 使用数字0-9和精选字母,排除了易混淆字符(I/1、L/1、O/0、U/V)。此外,Crockford 版本支持可选的校验符号和连字符分隔,且不需要 padding 字符(=),解码时对大小写不敏感并自动纠正常见混淆。

校验符号(Checksum)是如何工作的?

校验符号使用模37算法。编码时将整个Base32字符串视为一个以32为基数的大数,计算其对37取模的余数,然后用扩展的37字符集(增加 *、~、$、=、U)中对应位置的符号作为校验符。解码时可重新计算验证数据完整性。校验符号能有效检测单个字符错误和常见的换位错误。

Crockford Base32 有哪些典型应用场景?

适用于需要人类阅读或手动输入的场景:短URL标识符、产品激活码、用户邀请码、API密钥展示、游戏兑换码、数字签名摘要等。由于其排除了易混淆字符,用户通过电话或打印材料读取时错误率大幅降低。

编码后的长度会变化多少?

Base32 编码将每5个比特映射为1个字符,而原始数据每字节为8比特,因此编码后长度约为原始字节数的 1.6 倍(8÷5=1.6)。例如10字节数据编码后约16个字符。相比Base64(膨胀约1.33倍),Base32稍长但更具可读性。

解码时的大小写和混淆字符处理规则是什么?

Crockford Base32 解码器对大小写不敏感,a-z会自动转为A-Z。此外还会自动纠正常见混淆:字母 I/i 和 L/l 被当作数字1处理,字母 O/o 被当作数字0处理,字母 U/u 被当作字母V处理。这种容错设计让用户在手动输入时不必担心字符混淆。