Base58
Base58 是一种面向人类的二进制转文本编码,使用 58 个字符(去掉 Base64 中易混淆的 0、O、I、l、+、/),常用于加密货币地址。
用途
避免人工抄写时易混淆字符(0/O、I/l)造成的错误,同时使输出可双击选中(不含会被终端截断的字符)。
机制
将输入字节流当作大整数,反复对 58 取余得到各字符索引(类似进制转换);前导零字节映射为前导 1。由于非按位对齐,编码长度不固定且解码需大整数运算。
用例
- Bitcoin / Litecoin 地址编码
- IPFS CID 的 multibase 表示
- Monero 门罗币地址
- 短链接与邀请码生成
示例
- 输入
Hello World输出JxF12TrwUP45BMdThe Bitcoin Base58 alphabet
常见错误
- Assuming Base58 works on 6-bit groups (it is actually big-integer modulo arithmetic)
- Use a big-integer, byte-by-byte implementation or a mature library