反馈

Base32/58/62 编码全解析:和 Base64 有什么区别

Base64 是最常见的二进制转文本编码,但它不是唯一选择。Base32、Base58、Base62 分别针对不同场景做了取舍:有的为了让人读得清楚,有的为了塞进 URL 不用转义,有的为了避免容易看错的字符。


目录

  1. 为什么二进制要编码成文本
  2. Base32:字符集更小,更适合手抄
  3. Base58:比特币地址为什么选它
  4. Base62:URL 友好的短链接编码
  5. 四种编码对比

1. 为什么二进制要编码成文本

计算机里的二进制数据(图片、文件、加密后的密文)包含大量不可打印字符,直接放进 URL、JSON 文本、邮件正文里会出问题(比如被截断、转义出错)。解决方法是把二进制数据"翻译"成一组安全的可打印字符——这就是 Base 系列编码的共同目的。它们的区别在于用了多大的字符集、为了什么场景做了什么取舍

Base64 用 64 个字符(A-Z a-z 0-9 + /),编码密度高(3 字节变 4 字符),是通用场景的默认选择——具体原理见 Base64 深度解析

2. Base32:字符集更小,更适合手抄

Base32 只用 32 个字符(通常是 A-Z 加 2-7,不区分大小写),常见于:

  • TOTP 两步验证密钥(Google Authenticator 等 App 里让你手动输入的那一串,就是 Base32)
  • AWS 资源标识符

选它的原因很直接:字符集里没有容易混淆的字母(比如排除了 0、1、8、9 这类容易和字母 O、I、B、g 看混的数字),适合需要人眼辨认、手动输入的场景。代价是编码密度比 Base64 低(5 字节变 8 字符),生成的字符串更长。

3. Base58:比特币地址为什么选它

Base58 在 Base64 的基础上,进一步去掉了这几个字符:

  • 0(数字零)和 O(大写字母 O)——容易看混
  • I(大写字母 I)和 l(小写字母 L)——容易看混
  • +/——在 URL 和文件名里有特殊含义,容易出问题

比特币地址、IPFS 哈希都用 Base58,因为这些标识符经常需要手动抄写、口头念给别人、打印在纸钱包上——任何一个字符看错都可能导致资产转错地址,去掉容易混淆的字符能大幅降低人为出错率。

4. Base62:URL 友好的短链接编码

Base62 只用字母和数字(A-Z a-z 0-9,共 62 个字符),不含任何符号。它的定位很窄但很实用:把一个数字 ID 编码成短字符串,且保证在 URL 里不需要任何转义

典型场景是短链接服务:把数据库自增 ID(比如 123456789)转成 Base62 字符串(比如 8M0kX),生成的短链接 https://xx.co/8M0kX 干净、短、不含特殊字符。

5. 四种编码对比

字符集大小 编码密度 典型场景
Base64 64 高(3→4) 通用场景,Data URL、邮件附件
Base32 32 低(5→8) TOTP 密钥、需要手动输入的场景
Base58 58 比特币/区块链地址,需要手抄的标识符
Base62 62 较高 URL 短链接,纯字母数字的 ID 编码

一句话总结:字符集越小、去掉的易混字符越多,可读性和抗出错能力越强,但字符串会变长——四种编码本质上都是在"编码密度"和"人类友好度"之间选一个平衡点,没有哪个绝对更好,取决于最终是给机器读还是给人读。


在线编解码工具:Base32/58/62/100编码解码