Base32 编码器和解码器
Base32 使用 32 个字符表示二进制数据 — 数字 2-7 和 26 个大写字母,不包含 0/O 或 1/I,以避免读错。这让它非常适合任何需要人类输入或朗读的内容:双因素 TOTP 密钥、兑换码、大小写不敏感的标识符。这个工具会把二进制或文本编码为 Base32,也能解码回来,遵循 RFC 4648 并支持可选填充。
如何编码或解码 Base32
-
1
粘贴文本或上传文件
输入会按字节处理。文本输入默认解释为 UTF-8。
-
2
选择方向
编码会把原始字节变成 Base32 字符串;解码会恢复字节。
-
3
配置填充
RFC 4648 规定用 `=` 填充到长度为 8 的倍数。TOTP 密钥和紧凑令牌可关闭。
-
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):
- 分成 5 位一组:
01100 11001 10111 10110 1111(最后一组进行填充) - 映射到字母表:
MZXW6 - 加上
===填充凑足 8 个字符:MZXW6===
填充和长度规则
| 输入字节数 | 输出长度 | 填充 |
|---|---|---|
| 1 | 8 | ====== |
| 2 | 8 | ==== |
| 3 | 8 | === |
| 4 | 8 | = |
| 5 | 8 | (无) |
RFC 4648 之外的变体
- Base32 Hex — 字母表
0-9A-V,DNSSEC 中的 NSEC3 使用。 - Crockford’s Base32 — 针对人工输入优化的字母表;解码时把
O→0、I/L→1。ULID 和一些许可证密钥使用。
这个工具默认使用标准 RFC 4648。
TOTP 密钥
Google Authenticator 和每个现代 2FA 应用使用的 otpauth:// URI 格式,会把共享密钥编码为不带填充的 Base32。当你为 “My Service” 扫描二维码时,secret= 参数就是 Base32 字符串。用这个工具解码它,就能查看 HMAC 使用的原始字节。
常见问题
Base32 大小写不敏感,并避开容易混淆的字符,这对任何人类要读取或输入的内容都很重要。Base64 更紧凑(同样的字节用更少字符),但需要区分 I 和 l、0 和 O,手写和小字号时容易失败。
RFC 4648 说需要,但多数实际使用方(TOTP 应用、ULID 库、DNSSEC 解析器)都接受不带填充的输入。这个工具允许你选择;粘贴任一形式通常都能解码。
标准 Base32 没有 0、1、8 或 9,并且始终是大写。如果你的输入含有这些字符,它可能是 Crockford 变体或 base32hex,而不是 RFC 4648。清理输入或选择正确变体。
不会。编码和解码都在浏览器中完成。输入和结果都不会离开你的机器。
相关工具
Atbash 密码编码器
使用 Atbash 密码编码或解码文本,这是一种把 A-Z 映射为 Z-A 的希伯来替换法。同一个操作既可加密也可解密。
AES 加密 / 解密
使用 OpenSSL AES cipher 加密和解密低风险文本。口令会用 SHA-256 哈希,Base64 输出包含 IV 加密文。
A1Z26 密码编码器
使用 A1Z26 密码(A=1, B=2, ... Z=26)编码文本,或把数字序列解码回字母,并可自定义分隔符。
Base85 编码器和解码器
编码和解码 Adobe Ascii85(PostScript/PDF)或 Z85(ZeroMQ)变体的 Base85。对二进制数据比 Base64 更紧凑。
bcrypt 生成器
从 plaintext password 生成 bcrypt hash。Cost factor 可在 4 到 14 之间调整,兼容 Laravel、Django、Node 和 PHP。
bcrypt 哈希生成器
生成 bcrypt 哈希,或用明文密码对照已有的 bcrypt 哈希进行验证。一个工具内并排支持生成和验证。