Base58 编码解码

比特币字母表的 Base58 与短链常用的 Base62,前导零正确处理。

Base58 是比特币生态的发明:把 Base64 里肉眼易混的 0(零)、O(大写 o)、I(大写 i)、l(小写 L)和非字母数字的 +、/ 去掉,留下 58 个字符。地址、交易哈希、IPFS 的 CID 都用它——设计目标就是「被人手抄、手机输入、口头转述也不出错」。Base62 是它的近亲:保留全部字母数字(0-9A-Za-z),URL 短链服务用它把自增 ID 折成短字符串。

编码本质是把字节流当作大整数做 58/62 进制换算,本工具用 BigInt 实现,前导零字节按惯例各输出一个前导字符。文本先按 UTF-8 转字节再编码,中英文与 emoji 可正确往返。

Base58 与 Base58Check 的区别

裸 Base58 只是进制换算;比特币实际用的是 Base58Check——在载荷前加版本字节、后加双重 SHA-256 校验和再整体 Base58。本工具实现的是裸 Base58(与 Base62 一致的通用编码层);涉及比特币地址时要先按 Check 规则组装好字节再进来编码。

前导零为什么重要

字节流开头的 0x00 在大数里是「隐形的」——不特殊处理会直接丢失。Base58 的惯例是每个前导零字节编码成一个前导字符「1」:这也是比特币地址以 1 开头的由来(版本字节为 0)。

常见问题

Base58 和 Base62 该用哪个?
要人工转抄、防混淆选 Base58(无易混字符);URL 短链、ID 压缩等纯程序场景选 Base62(字符多一个,更紧凑,且天然 URL 安全)。
解码报非法字符是什么原因?
Base58 字母表不含 0、O、I、l;输入里出现它们说明数据来自 Base62 或其他编码,切换编码族再试。空格与换行会被自动忽略。
大小写敏感吗?
敏感。Base58/62 的字母表同时包含大小写字母,这与 Base32 的大小写不敏感是重要区别——人工转抄 Base58 时请逐字符核对大小写。

相关工具