Base58 是一种用 58 个字母数字表示字节数据的编码,由比特币采用后流行。下面重点说明多语言片段。
Base58代码示例合集
Python:
# 以比特币字母表为例(也可用 bitcoin 或 base58 库)
ALPH = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
def b58encode(data):
n = int.from_bytes(data, "big"); s = ""
while n:
n, r = divmod(n, 58); s = ALPH[r] + s
return ALPH[0] * (len(data) - len(data.lstrip(b"\0"))) + s
print(b58encode(b"Hello")) # 9AjdvzrJavaScript:
// 使用 bs58 等库:bs58.encode(new TextEncoder().encode("Hello"))Java:
// 使用比特币库或 Apache 等第三方 Base58 实现
示例
输入:I ♥ Unicode
编码结果:76HCKPo74DBWMqSKUQ
说明:按 UTF-8 共 13 字节,使用比特币 Base58 字母表(不含 0、O、I、l)。
规则说明
- 先确认字母表是 Bitcoin 还是 Flickr,顺序不同结果就不同
- 解码时遇到 0、O、I、l 应视为非法
- 前导 1 的个数必须与前导零字节数一致
- 中文先按 UTF-8 转为字节
Go 示例
下面是 Go 中处理Base58的常用写法:
import "github.com/btcsuite/btcutil/base58"
base58.Encode([]byte("Hello"))运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
本站的Base58编码工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【能加密吗?】不能。
【Hello 的 Base58 是什么?】按比特币字母表是 9Ajdvzr。
【为什么没有 0?】避免和字母 O 混淆;字母 I 和 l 也被去掉。
文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。
标签: 数码开发
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。