Base58编码解码工具
专业在线Base58编码解码工具,支持字符串和十六进制数据的Base58编码与解码
输入内容
编码结果
Base58编码解码原理与应用
Base58 简介与起源
Base58 是一种“二进制转文本”的编码方式,由 比特币(Bitcoin) 项目在 2009 年前后引入并推广,首次出现在比特币参考实现中。其核心目标是:在不牺牲太多编码效率的前提下,让编码结果更适合人类阅读、抄写与口头传递,并减少因字符相似而导致的错误。
Base58 并非 IETF 等标准化组织发布的“标准”,但在区块链与去中心化存储生态中被广泛采用(如 Bitcoin、IPFS、Filecoin 等)。
标准Base58字符表
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz共58个字符:1-9 (9个),A-Z(去掉 I、O)(24个),a-z(去掉 l)(25个)
被排除的易混淆/特殊字符:0 O I l + / =
Base58 与 Base64 的区别
| 对比项 | Base58 | Base64 |
|---|---|---|
| 字符集大小 | 58 个 | 64 个 |
| 字符选择 | 数字 + 大小写字母,剔除易混淆字符 | 数字 + 大小写字母 + + / |
| 填充字符 | 无填充 | 用 = 填充到 4 的倍数长度 |
| 可读性/抄写友好 | 更适合人类核对、手写、口述 | 不适合手写(含符号、易换行) |
| 编码效率(同数据长度) | 稍低(字符集更小) | 更高(字符集更大) |
| 典型用途 | 区块链地址、私钥、IPFS CID 等 | URL 参数(变体)、邮件附件、数据传输等 |
编码原理(256 进制 → 58 进制)
- 统计输入字节数组的前导零字节数量(用于后续恢复)。
- 将字节数组视为一个大整数(按 256 进制解析)。
- 用这个大整数反复除以 58,取余数作为 Base58 字符索引。
- 将余数序列倒序,得到基础编码结果。
- 在结果前补回与前导零字节数相同的
'1'('1'对应字节0x00)。
解码原理(58 进制 → 256 进制)
- 统计 Base58 字符串的前导
'1'数量(对应解码后的前导零字节)。 - 将 Base58 字符串按 58 进制解析为一个大整数。
- 将大整数转换为字节数组(按 256 进制拆分)。
- 在字节数组前补回统计到的零字节。
- 输出最终二进制数据。
常见应用场景
- 比特币生态:地址、WIF 私钥、部分脚本与扩展公钥表示。
- IPFS / libp2p:早期 CID(如
Qm...)常用 Base58 编码。 - Filecoin / 部分区块链:地址、矿工 ID 等标识。
已知的测试用例
| 输入 | Base58编码结果 | 说明 |
|---|---|---|
| "Hello World" | JxF12TrwUP45BMd | 标准测试用例 |
| "Bitcoin" | 4jJc4sAwPs | 短字符串测试 |
| 空字符串 | "" | 边界测试 |
| 0x00 (1字节) | "1" | 单个零字节 |
| 0x0000 (2字节) | "11" | 多个零字节 |