在线Base32编码解码
RFC 4648 Base32 编解码、兼容无 padding 和带空格的 TOTP 密钥、中文按 UTF-8
关于Base32编码解码
Base32 按 RFC 4648 标准,字母表是 A–Z 加 2–7,一共 32 个字符。每 5 位二进制出一个字符,所以同样的内容比 Base64 长约 60%——它换来的是不区分大小写也不容易看错:字母表里故意没有 0、1、8、9,就是为了避开和 O、I、l、B 混淆。这个设计最早是给电传和人工抄写用的。
最常遇到它的是两步验证密钥。 Google Authenticator、Authy 那些 otpauth:// 链接里的 secret,本身就是 Base32。这类密钥有三个特点,这里的解码都兼容:不带 padding、大小写不敏感、常按 4 位分组加空格(JBSW Y3DP EHPK 3PXP)。直接整段粘进来就能解,不用自己去空格和补等号。
编码时会补 = 到 8 的倍数(RFC 4648 的 padding),解码时 = 可有可无。这两件事都是标准允许的,不同系统给不给而已。
长度对不上会直接报错,不会给你一串乱码。 去掉 padding 后,长度除以 8 的余数只可能是 0、2、4、5、7(因为 5 个字符出 4 个字节)。余数是 1、3、6 说明中间漏了字符——工具会明确说出来,而不是硬解出一个看起来像结果的东西。
这不是 Crockford Base32。 Crockford 那个变体去掉了 I、L、O、U,字母表里用 0–9 补位,还自带校验位,常见于人工录入的编号(比如某些支付的订单号)。拿 Crockford 编码的串来这里解,会报非法字符,或者解出完全不同的字节。两者不能互转。
按 UTF-8 处理中文,不是 Latin-1。解出来的字节如果不是合法 UTF-8(比如解的是加密后的密文、图片片段),会改用十六进制显示,不塞一堆替换字符给你。想看原始字节就勾上「解码显示为十六进制」。
Base32 是编码不是加密,任何人都能解回来。要保密请用 AES 那一页。
全部在浏览器里完成,输入不会上传。
常见问题
为什么 Base32 比 Base64 长这么多?
Base32 每 5 位出一个字符,Base64 每 6 位。同样字节数下 Base32 大约长 60%,换来的是不区分大小写、不会看错字符。
Google Authenticator 的密钥能直接解吗?
能。那串 secret 就是 Base32,带空格、不带 = 也可以,这里会自动去掉空格和等号、忽略大小写。
为什么提示长度不对?
去掉 padding 后长度除以 8 的余数只能是 0、2、4、5、7。余数是 1、3、6 说明中间少了字符,检查一下复制是否完整。
Crockford Base32 能解吗?
不能。Crockford 变体换了字母表(去掉 I L O U、用 0-9 补位)还带校验位,和 RFC 4648 不兼容。
解出来是十六进制怎么办?
说明字节不是合法 UTF-8,可能是密文或二进制数据。取消勾选「十六进制」会尝试按文本显示。
能拿它加密吗?
不能。Base32 只是编码,任何人都能解回来。要保密请用 AES 对称加密。