Bitcoin Base58 编码的含义
Base58 使用 58 个字母数字符号表示字节序列。本页采用 Bitcoin 字母表,排除 0、O、I、l,减少字体中的视觉混淆,也避免会在 URL、文件名和命令行中产生额外含义的标点。
它不像 Base32 或 Base64 那样按固定比特分组,而是把整段字节看作一个无符号大整数,反复除以 58。大整数本身会丢失开头的零,因此格式规定每个前导零字节必须变成一个前导字符 1。
普通文本会先编码为 UTF-8。解码后先得到原始字节,再使用严格 UTF-8 解码。Base58 可以承载任意二进制,因此密钥、哈希或交易数据未必能显示为文本。
如何使用 Base58 转换器
- 普通文本选择编码,已有 Base58 字符串选择解码。
- 原样粘贴输入;Base58 没有填充、分隔符或可忽略空白,并且区分大小写。
- 非法字符会立即报错,不会被删除或替换。
- 使用 Hello World 向量核对实现,使用 Unicode 示例核对 UTF-8。
- 文本往返可验证可读数据;二进制负载在代码中应使用字节函数。
Bitcoin Base58 示例
示例覆盖文本、Unicode、前导零和非法字符。Base58 没有填充,因此开头的每个字符 1 都是有意义的数据。
| 输入 | 输出 | 转换方向 | 说明 |
|---|---|---|---|
Hello World |
JxF12TrwUP45BMd |
编码 | 常见文本向量. 该常用向量展示无填充的 Bitcoin 字母表。 |
JxF12TrwUP45BMd |
Hello World |
解码 | 解码测试向量. 先恢复字节,再严格验证是否为 UTF-8 文本。 |
Base58 |
a4E9kYnK |
编码 | 短 ASCII 文本. Base58 区分大小写,不同大小写对应不同数值。 |
你好 |
2xuZUfBKa |
编码 | Unicode UTF-8. 两个中文字符先转换为六个 UTF-8 字节。 |
1112 |
|