123问免费工具与知识服务
123问工具大全› 工具大全› 文本工具› Base32编码

🔢 Base32编码

RFC 4648 · 文本↔Base32 · 编码/解码

Base32 字母表 (RFC 4648)

Base32编码常见问题

Base32和Base64有什么区别?

Base32用32个字符(A-Z和2-7),每5位编码一个字符,膨胀率约60%;Base64用64个字符,每6位编码一个字符,膨胀率约33%。Base32不区分大小写、更易读写,但更占空间。

Base32字母表为什么没有0和1?

RFC 4648的Base32用A-Z(26个)+2-7(6个)=32个字符。排除0、1、8、9是为了避免和字母O、I、B、G在视觉上混淆,提高人工可读性。

Base32的填充规则是什么?

输入按5字节(40位)分组,每组输出8个Base32字符。不足5字节时用0补齐位,末尾用"="填充。比如1字节输入输出2个字符+6个"="。

Base32膨胀率为什么是60%?

每5个bit编码成1个字符(8位),等于把5位"摊"成8位存储,所以输出长度 = 输入bit数÷5。相比原文,ASCII文本膨胀约1.6倍,即约+60%。

Base32常用于哪些场景?

常见于OTP动态口令(TOTP/HOTP种子密钥)、DNS安全协议(DNSSEC的密钥指纹)、密钥管理、以及一些需要人工抄写的编码场景,因为不含易混淆字符。

Base32区分大小写吗?

不区分。字母表全是大写A-Z,解码时通常会把小写转成大写处理。所以同一串Base32,大小写混写也不影响解码结果。

中文能编码成Base32吗?

能。工具先把中文按UTF-8转成字节序列,再按Base32规则编码。因为中文一个汉字占3字节,编码后长度会更长。

Base32是加密吗?

不是。Base32只是编码(可逆的格式转换),不提供任何安全性。任何人都能解码,别用它保护敏感信息,机密数据要用AES等加密算法。

Base32编码 - 示例演示

示例一:空字符/短文本

输入:输入 "A"
结果:Base32编码为 "IE======"(1个字符+6个=填充)
1字节输入输出2个Base32字符拖6个=号,正好展示填充规则。

示例二:URL安全需求

输入:输入 "hello"
结果:Base32编码为 "NBSWY3DP"
5字节输入正好输出8个字符,无填充。Base32只含字母和数字,很适合放进URL而无需转义。

示例三:中文编码

输入:输入 "你好"
结果:按UTF-8编码后Base32为一串字母数字(每个汉字3字节,共6字节,输出约10个字符+2个=)
中文编码后明显变长,了解膨胀特性有助于预估存储空间。

Base32编码深度解读

Base32是怎么工作的?

Base32采用基数为32的编码:把输入字节转为二进制位流,每5位对应一个字符(2^5=32)。字符表固定为A-Z和2-7。

Base32字符表(RFC 4648)
值字符值字符
0A1B
2C3D
4E5F
6G7H
8I9J
10K11L
12M13N
14O15P
16Q17R
18S19T
20U21V
22W23X
24Y25Z
262273
284295
306317

5字节(40位)正好分成8组5位,所以输入按5字节分组最干净。

填充和长度怎么算?

  • 输入按5字节分组,每组输出8个字符
  • 不足5字节的最后一组,用"="补齐到8个字符
  • 输出长度 = ceil(输入字节数 × 8 / 5),再对齐到8的倍数
  • 可解码时忽略"="继续处理,末尾缺位补0

理解了位数和分组,就能手工校验任何Base32结果。

Base32 vs Base64 vs Base58

三种Base编码对比
编码字符集每字符位数膨胀率特点
Base32A-Z,2-75位约60%不区分大小写、易读写
Base64A-Z,a-z,0-9,+,/6位约33%紧凑,但含+/=
Base58去0OIl的58字符约5.86位约40%比特币地址、短链

选哪种取决于需求:追求紧凑选Base64,追求可读选Base32,追求去混淆选Base58。

Base32和加密、认证的关系

Base32本身不加密,但它常和加密、认证配合:OTP动态口令的种子密钥通常以Base32形式分发给用户,用户扫码或手动输入后,配合时间戳生成一次性密码。这种方式用户手工录入方便,且不易输错。

Base32编码参考数据

Base32输出长度预测

输入字节数输出字符数=填充数
126
244
353
471
580
10160

常用编码对比例子(输入 FOOBAR)

编码结果
Base32MZXW6YTBOI======
Base64Rk9PQkFS
Hex464f4f424152

使用说明

使用方法

1. 在左侧输入原始文本或Base32编码文本。

2. 点击"编码"或"解码"。

3. 结果自动显示在右侧。

分享工具: Facebook Twitter 微博 复制链接