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 要求它们存在,但解码时会被忽略。
这个工具会上传我的文本吗? 不会。所有编码解码都在本地浏览器中完成。