🔹 什么是 Base58?
Base58 是一种二进制到文本的编码方案,由比特币创始人中本聪引入。它在 Base64 的基础上移除了 容易混淆的字符:0 (数字0), O (大写O), I (大写I), l (小写L),以及特殊符号 + 和 /。最终字母表包含 58 个字符:1-9 A-H J-N P-Z a-k m-z,使得编码结果更易于人工阅读、手写和口头传播。
⚙️ Base58 编码核心算法
与 Base64 按位分组不同,Base58 采用大整数进制转换:将输入数据视为一个大整数(256进制),然后不断除以58取余数,余数映射到字母表得到反转字符串。同时,输入中前导零字节 0x00 会被特殊处理,每个前导零转换为一个字符 '1'。这种设计保证了编码结果的确定性,并保留了原始数据的长度信息。
📌 Base58 字母表(58字符):
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
💎 Base58 vs Base64 vs Base58Check
| 特性 | Base64 | Base58 | Base58Check |
| 字母表大小 | 64 (A-Z a-z 0-9 + /) | 58 (去除了0,O,I,l,+,/) | 与 Base58 相同 |
| 特殊字符 | +, / | 无 | 无 |
| 易混淆性 | 较高(0/O,1/l) | 极低 | 极低 |
| 校验和 | 无 | 无 | 4字节双SHA256 |
| 典型应用 | 电子邮件附件、JSON传输 | 比特币地址、WIF私钥、IPFS CID | 比特币地址、BIP32扩展密钥 |
🌐 Base58 主要应用场景
- 比特币地址:P2PKH 地址以 '1' 开头,P2SH 以 '3' 开头,均使用 Base58Check 编码(带版本和校验和)。
- WIF 私钥格式:比特币钱包导入格式,Base58Check 编码,以 '5'、'K'、'L' 开头。
- IPFS 内容标识符(CID):部分编码采用 Base58,便于在分布式网络中传播。
- Flickr 短链接:早期 Flickr 的短链接服务使用类似 Base58 技术生成短ID。
- 加密货币领域:几乎所有的山寨币地址都沿用了 Base58Check 编码。
❓ 常见问题(FAQ)
1. 什么是 Base58Check?与普通 Base58 有何区别?
Base58Check 是在 Base58 编码前添加版本前缀(1字节)和末尾添加4字节校验和(双SHA256的前4字节),然后整体进行 Base58 编码。它能防止用户输错地址,广泛应用于比特币地址和私钥。本工具实现的是纯 Base58,不包含校验和与版本字节。
2. 为什么 Base58 编码结果以“1”开头?
因为输入字节中的前导零(0x00)会被转化为字符 '1'。如果原始数据有多个前导零,开头的 '1' 也会相应增多。比特币地址多以 '1' 开头,正是因为版本字节为 0x00。
3. 这个工具支持中文或 Emoji 吗?
完全支持。编码时会将 UTF-8 字节序列进行 Base58 转换,解码后可以完美还原原始文本(包括中文、日文、Emoji 等)。
4. 我的数据会上传到服务器吗?
不会。所有编码/解码操作都使用 JavaScript 在您的浏览器中完成,没有任何网络请求,可以放心处理私密信息。
5. Hex→Base58 模式有什么用?
很多场景下原始数据以十六进制形式提供(比如 32 字节公钥哈希),您可以直接将 Hex 字符串编码为 Base58,方便获得比特币风格的地址表示。
6. 为什么 Base58 输出看起来大小写混合?
字母表设计包含了大小写(大写字母 A-H, J-N, P-Z;小写字母 a-k, m-z),因此 Base58 编码结果是大小写敏感的。请务必原样复制使用。
本工具严格遵循 Bitcoin Core 所使用的 Base58 实现,经测试与主流比特币库(如 bitcoinjs-lib)完全兼容。