跳到正文
BCBinary Code Translator
菜单

Bitcoin 字母表字节编码

Base58 编码 / 解码器

使用 Bitcoin Base58 字母表转换 UTF-8 文本与字节;每个前导零字节保留为字符 1,并严格拒绝 0、O、I、l 等非法字符。

大整数转换与 UTF-8 解码全部在浏览器本地完成。

转换方向
0 个字符
0 个字符

转换仅在当前浏览器本地执行,输入不会上传。

尚无结果。

Bitcoin Base58 编码的含义

Base58 使用 58 个字母数字符号表示字节序列。本页采用 Bitcoin 字母表,排除 0、O、I、l,减少字体中的视觉混淆,也避免会在 URL、文件名和命令行中产生额外含义的标点。

它不像 Base32 或 Base64 那样按固定比特分组,而是把整段字节看作一个无符号大整数,反复除以 58。大整数本身会丢失开头的零,因此格式规定每个前导零字节必须变成一个前导字符 1。

普通文本会先编码为 UTF-8。解码后先得到原始字节,再使用严格 UTF-8 解码。Base58 可以承载任意二进制,因此密钥、哈希或交易数据未必能显示为文本。

如何使用 Base58 转换器

  1. 普通文本选择编码,已有 Base58 字符串选择解码。
  2. 原样粘贴输入;Base58 没有填充、分隔符或可忽略空白,并且区分大小写。
  3. 非法字符会立即报错,不会被删除或替换。
  4. 使用 Hello World 向量核对实现,使用 Unicode 示例核对 UTF-8。
  5. 文本往返可验证可读数据;二进制负载在代码中应使用字节函数。

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  解码 前导零字节. 每个开头的 1 恢复一个零字节;NUL 在文本框中可能不可见。
编码 空值。 空字节序列的 Base58 表示也是空;非法字符会由严格校验和测试覆盖。

字母表、前导零与文本限制

编码不会增加版本字节或校验和。解码只接受准确的 Bitcoin 字母表,换行也不是装饰。

开头的 1 十分重要,每个都增加一个零字节。位于其他字符之后的 1 只是普通的零值数字,不再按前缀特殊处理。

  • 0、O、I、l 始终非法。
  • 大小写不可互换。
  • 不存在等号填充。
  • 每个前导零字节严格对应一个前导 1。
  • 本页显示文本时要求恢复字节是有效 UTF-8。

Base58 如何保留字节序列

编码器先统计 UTF-8 数组开头的零字节,再按 value = value × 256 + byte 构造 BigInt。反复除以 58 得到余数,并映射到 Bitcoin 字母表;最后把零字节前缀恢复为字符 1。

解码执行镜像运算:按 value = value × 58 + digit 累积大整数,再拆成 256 进制字节,并在最前面补回每个前导 1 对应的零字节。

BigInt 保证长数据计算精确,但 Base58 本身不校验错误。需要拼写检测的协议通常使用 Base58Check;本页不会虚构版本和校验字段。

Base58 的典型用途

Base58 常用于面向人的二进制标识符,优势是较易抄写和无标点,而不是安全性。

用途 说明
加密货币标识符 Bitcoin 地址和私钥格式通常使用在 Base58 上增加校验和的 Base58Check。
内容与对象 ID 部分分布式系统用 Base58 或带 multibase 前缀的 Base58 表示哈希。
邀请与分享码 受限字母表能减少视觉错误,但业务仍应增加校验。
公开数据库 ID 可缩短大整数或随机字节标识符,并避免 URL 保留标点。
互操作测试 前导零向量能快速暴露字母表顺序和长度处理错误。

Base58 中真正重要的错误

除非法字符外,大小写变化和前缀丢失更隐蔽。某些软件自动改变大小写后,字符串仍可能全部合法,但数值已经改变。

语法合法也不表示符合上层协议。本页只理解字母表和 UTF-8,不验证地址版本、校验和、密钥长度或 multibase 前缀。

  • 0 不能代替任何相似字符。
  • 只有来源规范允许时,才应手动移除换行。
  • 删除一个前导 1 就会删除一个零字节。
  • 改变大小写会改变数值。
  • Base58Check 必须由专用实现验证校验和。

Base58、Base58Check 与 RFC 编码

原始 Base58 只是可逆表示。Base58Check 通常增加版本字节和四字节校验和;完成字母表解码只是验证流程的一步。

Base32 和 Base64 使用固定比特分组,流式处理更简单;Base58 的字母表更适合人工,但需要完整进制转换。

格式 说明
Base58Check 增加协议字段和校验和,本页不创建也不验证。
Base32 字母表更小且可大小写不敏感,但结果更长。
Base64url 更紧凑且适合 Web 协议,但人工抄写时仍可能不如 Base58。

Base58 编码解码常见问题

使用哪一种 Base58 字母表?

使用 Bitcoin 字母表,开头为 123456789ABCDEFGH...,排除 0、O、I、l。其他 Base58 字母表的顺序可能不同。

为什么前导 1 很重要?

每个前导 1 表示一个前导零字节。大整数转换会丢失这些零,因此增删前导 1 会改变数据长度和值。

它与 Base58Check 相同吗?

不同。Base58Check 增加校验和和通常的版本信息;本页只做原始 Bitcoin 字母表转换。

可以编码 Unicode 吗?

可以。文本先转为 UTF-8 字节;解码只有在恢复字节是有效 UTF-8 时才返回文本。

为什么没有填充开关?

Bitcoin Base58 没有固定输出分组,也不使用等号。完整字符串由整数值和前导零规则决定。

Base58 能隐藏敏感信息吗?

不能。它是可逆编码,不提供加密、认证或完整性。

相关工具

查看全部工具

Cookie 偏好设置

管理你的 Cookie 偏好。必要 Cookie 无法关闭。

必要 Cookie

必要

用于语言选择、隐私选择和网站基础功能,属于必需项。

Cookie: NEXT_LOCALE

分析 Cookie

可选的分析 Cookie 可帮助我们了解访问情况并改进网站。

Cookie: _ga, _gid, _gat, _clck, _clsk

广告 Cookie

可选的广告 Cookie 可能用于展示相关广告并衡量广告效果。

Cookie: __gads, _gcl_au, IDE