数据安全提示: 所有文本数据均在您的浏览器本地处理,不会上传到服务器。
Base32转换工具
Base32 v1.0
当前操作:文本 → Base32编码(标准Base32)
Base32变体
编码选项
输入文本
字符数: 0
字节数: 0
膨胀率: 1.60×
转换结果
转换结果将显示在这里...
等待输入...
长度: 0
两步验证(OTP)示例
Base32常用于两步验证(2FA)的密钥生成,如Google Authenticator、TOTP/HOTP等。
JBSWY3DPEBLW64TMMQQQ====
Base32编码的TOTP密钥
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ
Base32编码的HOTP密钥
使用示例
"Hello" → Base32
JBSWY3DP
"12345" → Base32
GEZDGNBV
"ABCDE" → Base32
IFBEGRCF
"JBSWY3DP" → 解码
Hello
Base32算法原理
Base32字符集
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
共32个字符,排除了容易混淆的0、1、8、9,加=作为填充字符
编码效率比较
Base32每5字节编码为8字符,膨胀率1.6倍。比Base16紧凑,但比Base64低效。优势在于不区分大小写。
编码过程示例 ("ABCDE")
5个字节
01000001
01000010
01000011
01000100
01000101
重组为40位
01000001 01000010 01000011 01000100 01000101
分为8组5位
01000
00101
00001
00100
00110
10001
00010
00101
8个Base32字符
IFBE
GRCF
// Base32编码算法伪代码
function encodeBase32(bytes) {
const ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
let result = "";
for (let i = 0; i < bytes.length; i += 5) {
let chunk = 0, padding = 0;
for (let j = 0; j < 5; j++) {
if (i + j < bytes.length) chunk = (chunk << 8) | bytes[i + j];
else padding++;
}
for (let j = 7; j >= 0; j--) {
if (j < padding) result += "=";
else result += ALPHABET[(chunk >> (j * 5)) & 0x1F];
}
}
return result;
}
function encodeBase32(bytes) {
const ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
let result = "";
for (let i = 0; i < bytes.length; i += 5) {
let chunk = 0, padding = 0;
for (let j = 0; j < 5; j++) {
if (i + j < bytes.length) chunk = (chunk << 8) | bytes[i + j];
else padding++;
}
for (let j = 7; j >= 0; j--) {
if (j < padding) result += "=";
else result += ALPHABET[(chunk >> (j * 5)) & 0x1F];
}
}
return result;
}
Base32变体介绍
标准Base32
RFC4648标准,字符集A-Z和2-7,最常用。
ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
应用:OTP、DNSSEC、文件系统
Base32Hex
使用0-9和A-V,保持字典顺序。
0123456789ABCDEFGHIJKLMNOPQRSTUV
应用:需要排序的标识符
Crockford's Base32
去除易混淆字符,支持校验和。
0123456789ABCDEFGHJKMNPQRSTVWXYZ
应用:人类可读标识符、邀请码
应用场景
两步验证(OTP): Google Authenticator等使用Base32编码密钥。
DNSSEC: NSEC3哈希使用Base32编码域名。
文件系统: SquashFS等使用Base32避免大小写敏感。
产品序列号: 不区分大小写,减少输入错误。
为什么选择Base32?
- 不区分大小写,适合人工输入
- 排除了易混淆字符(0,1,8,9)
- 文件系统友好,大小写不敏感
- 行业标准(OTP、DNSSEC)