在线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 对称加密。

同类工具

编码解码 查看全部 ›