Base58 是一种用 58 个字母数字表示字节数据的编码,由比特币采用后流行。下面重点说明编码步骤。
Base58如何编码
字节(大端整数)→ 除 58 取余 → 查字母表;前导 0x00 写成 1。
把输入当作一个大端无符号大整数,反复除以 58 取余数,余数映射到字母表;最后把输入开头的每个 0x00 写成 “1”。例如 “Hello” 的 Base58 是 9Ajdvzr。比特币地址还要在前后加版本与校验(Base58Check),那是在普通 Base58 之外的规则。
示例
输入:Hello
编码结果:9Ajdvzr
说明:按 UTF-8 共 5 字节,使用比特币 Base58 字母表(不含 0、O、I、l)。
规则说明
- 先确认字母表是 Bitcoin 还是 Flickr,顺序不同结果就不同
- 解码时遇到 0、O、I、l 应视为非法
- 前导 1 的个数必须与前导零字节数一致
- 中文先按 UTF-8 转为字节
常见用途
- 比特币等加密货币地址(常配合 Base58Check)
- IPFS 内容标识、部分短链
- 需要人眼核对、避免 0/O 混淆的令牌
本站的Base58编码工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【为什么没有 0?】避免和字母 O 混淆;字母 I 和 l 也被去掉。
【开头很多 1 代表什么?】输入数据开头的零字节。每个 0x00 对应一个 1。
【和比特币地址是一回事吗?】地址是 Base58Check:在数据上加版本和校验后再做 Base58。
文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。