Base58 编码解码
普通文本会先按 UTF-8 转成字节,再编码为 Base58 或 Base58Check。
在浏览器里完成 Base58 与 Base58Check 编码解码,支持文本、文件、自定义字符表和十六进制结果查看。
相关推荐
什么是 Base58 与 Base58Check?
Base58 是一种面向人类阅读和复制粘贴的文本编码。它会去掉 0、O、I、l 这类容易看错的字符,因此常被用在短标识、邀请码、钱包地址、离线分享码等场景。
标准 Bitcoin Base58 字符表为 `123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz`。本页同时支持 Flickr 版字母表,以及你自己定义的 58 字符字符表。
Base58Check 是在原始字节后追加 4 字节校验和,再整体做 Base58 编码的方案。它常用于比特币旧地址、WIF 私钥导出、邀请码或需要人工抄写的字符串,目标是更早发现输错、漏字或顺序错乱。
如果你拿到的是二进制负载、地址载荷或哈希片段,解码后的内容不一定是可读文本。这时更适合切到十六进制查看,而不是把乱码误判为解码失败。
IPFS CIDv0 使用的是标准 Base58btc,而不是 Base58Check;`bc1...` 这类比特币地址属于 Bech32,也不在本页 Base58 范围内。
适用场景
- 校验旧版比特币地址、WIF 私钥导出串或自定义 Base58Check 分享码是否被输错。
- 把小文件、二进制片段或测试载荷编码成 Base58,方便在日志、聊天或工单里传递。
- 把 Base58 字符串先解码成十六进制,继续分析其中的版本字节、哈希或原始负载。
- 在 Bitcoin Base58 与 Flickr Base58 之间比对输出,排查同一套字节为什么在不同系统里结果不同。
- 为内部邀请码、短标识或离线 token 设计自己的 58 字符字符表,并验证双端是否一致。
使用方法
- 选择编码或解码模式;如需处理人工输入容易出错的字符串,再打开 Base58Check 选项。
- 选择 Bitcoin、Flickr 或自定义字符表;如果是私有协议,先确保双方用的是同一套 58 字符顺序。
- 编码时输入文本或上传文件;解码时粘贴 Base58 字符串,必要时切换到十六进制结果查看原始字节。
- 查看输出后直接复制或下载;若是 Base58Check,页面会同步提示校验是否通过。
功能特点
- 标准 Base58 与 Base58Check 双模式:可直接做普通编码,也可自动追加或校验 4 字节校验和。
- 文本与文件都能编码:普通文本会按 UTF-8 处理,文件则会按原始字节编码,适合离线传递二进制内容。
- 解码结果可切换文本或十六进制:遇到地址载荷、哈希片段或非 UTF-8 数据时,不会被乱码卡住。
- 支持 Bitcoin、Flickr 和自定义 58 字符字符表:适合兼容已有系统,或调试私有短码方案。
- 浏览器本地处理与结果下载:编码、解码、校验都在本机完成,输出可直接复制或下载。
Base58、Base58Check、Base64 该怎么选?
它们都能把字节转成可传递的文本,但侧重点完全不同。关键不是“哪个更高级”,而是你是更重视人工抄写、防输错,还是更重视紧凑和通用兼容。
| 方案 | 更适合 | 优势 | 注意点 |
|---|---|---|---|
| 标准 Base58 | 短标识、手动输入、复制分享 | 去掉易混淆字符,肉眼更好辨认,适合邀请码、离线码、CIDv0 这类字符串。 | 没有内建校验和;如果需要自动验错,应改用 Base58Check。 |
| Base58Check | 地址、导出串、人工抄写后的再次校验 | 在 Base58 上再加 4 字节校验和,更容易发现漏字、错字和顺序错误。 | 输出会比标准 Base58 略长;它只负责验错,不负责解析地址类型或网络。 |
| Base64 / Base64URL | 接口传输、前后端交换、需要更短输出时 | 同样的数据通常比 Base58 更短,生态更通用,适合程序之间直接传输。 | 字符里可能包含 +、/、=;如果要放进 URL,应改用 URL-safe 变体。Base64 编码Base64 URL Safe |
| Base32 | 不区分大小写、口头传递或某些兼容场景 | 字符集更保守,一些系统里输入容错更高。 | 输出通常比 Base58 更长;如果主要诉求是更短、更适合短码,Base58 往往更合适。Base32 编码 |
最佳实践
人工抄写或客服转述时优先开 Base58Check
只要字符串会经过口述、截图、聊天转发或人工重输,校验和几乎总是值得开。它不会阻止所有错误,但能明显减少“看起来像对,其实少了一个字符”的情况。
大文件不要把 Base58 当长期存储格式
Base58 更适合短字符串和中小载荷。文件越大,输出越长、复制越不方便,也更容易在富文本、聊天工具或日志中被截断。
自定义字符表时一定同步到所有生产端
只要有一个服务端、脚本或客户端用了不同顺序,编码和解码结果就会全部错位。先固定 58 字符顺序,再把它写进协议或测试样例里。
需要更短、更通用的接口传输时优先比较 Base64URL
Base58 的优势是易读和防混淆,不是体积最省。如果字符串主要在程序间传递,且不会人工抄写,Base64URL 通常更紧凑也更常见。
Base64 URL Safe常见问题
Base58 和 Base64 应该选哪个?
如果字符串要给人看、给人抄、给人输,优先 Base58;如果主要是在程序、接口、JSON 或 URL 参数里传输,通常 Base64 或 Base64URL 更紧凑。Base58 的重点是可读性和防混淆,不是最短输出。
Base58Check 到底解决什么问题?
它会在原始负载后追加 4 字节校验和,再整体做 Base58 编码。这样当用户漏字、错字或顺序写错时,工具更容易及时报错,而不是静悄悄地得到一串无意义结果。
这个页面能校验比特币地址吗?
可以校验 Base58Check 这一层是否正确,因此适合检查旧版 Base58 地址或 WIF 导出串有没有明显输入错误。但它不会进一步判断地址用途、网络类型、脚本类型,也不支持 `bc1...` 这类 Bech32 地址。
为什么解码后是乱码,或者提示不是 UTF-8?
因为 Base58 解出来的是原始字节,不一定是可读文本。地址载荷、哈希、图片头或任意二进制数据都可能出现这种情况。切到十六进制查看原始字节,通常就能继续分析。
支持文件 Base58 编码和解码吗?
支持。编码时可以上传文件,页面会按原始字节转成 Base58;解码后也可以把原始结果下载回来。文件越大,输出字符串越长,因此更适合中小型负载或调试场景。
支持哪些字符表?
当前支持标准 Bitcoin Base58、Flickr Base58,以及你自定义的 58 字符字符表。只要编码端和解码端使用完全相同的字符顺序,就可以互通。
能处理 IPFS CID 或别的链上字符串吗?
CIDv0 这类标准 Base58btc 字符串可以直接编码或解码;但页面不会继续解析 multibase、multicodec 或具体链上语义。像 `bc1...` 这种 Bech32 字符串,也不属于 Base58 范围。
上传的内容会发到服务器吗?
不会。文本、文件、Base58Check 校验和结果都在浏览器本地处理,适合调试敏感负载、离线测试数据或不方便上传的文件片段。
故障排查
提示包含非法 Base58 字符
当前字符表不接受 0、O、I、l 这类被排除字符,也可能是你切错了 Bitcoin / Flickr / 自定义字符表。先确认字符串来源,再检查字符表是否和对方一致。
Base58Check 校验失败
通常说明字符串被少复制了、字符写错了,或者它本身就不是 Base58Check。先确认是否真的需要打开 Base58Check,再回头检查原始内容是否完整。
自定义字符表无法保存
自定义字符表必须正好 58 个字符,而且每个字符都只能出现一次。建议先从标准 Bitcoin 字符表开始修改,避免少字符或重复字符。
解码结果不是文本
这不一定是错误。很多 Base58 字符串本来承载的就是二进制负载。切到十六进制查看,或把解码结果下载为文件,再决定下一步处理方式。
术语表
- Base58
- 去掉 0、O、I、l 等易混淆字符的 58 进制文本编码,适合人工输入和复制分享。
- Base58Check
- 在原始负载后追加 4 字节校验和,再整体做 Base58 编码的方案,用来更早发现输错。
- Payload
- 做 Base58 或 Base58Check 编码前的原始字节内容,可以是文本、文件字节、地址载荷或任意二进制数据。
- Checksum
- 用于快速验错的短指纹。Base58Check 会对负载做双 SHA-256,并取前 4 字节作为校验和。
- Bitcoin Base58 字符表
- 最常见的 Base58 字符表:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz。
- Flickr Base58
- Flickr 使用过的另一套 Base58 排序,大小写顺序与 Bitcoin 版不同,因此同样的字节会得到不同输出。
当前页支持的字符表
同样一组字节,只要字符表顺序不同,最终 Base58 输出就会不同。
| 字符表 | 常见用途 | 说明 |
|---|---|---|
| Bitcoin Base58 | 钱包地址、CIDv0、常见 Base58 工具 | 默认字符表,兼容绝大多数 Base58 场景。 |
| Flickr Base58 | 旧 Flickr 短 ID 场景 | 大小写顺序和 Bitcoin 版不同,不能混用。 |
| 自定义 58 字符表 | 内部协议、短码系统、私有兼容层 | 必须保证 58 个字符唯一且双端顺序一致。 |
什么时候该切到十六进制查看
Base58 解码的结果不是总能直接读成文本。
| 遇到的内容 | 更适合的查看方式 | 原因 |
|---|---|---|
| 地址载荷 / 版本字节 | 十六进制 | 更容易看出前缀、校验和和固定字节结构。 |
| 哈希片段 / 二进制测试数据 | 十六进制 | 这些内容本来就不是 UTF-8 文本。 |
| 普通短文本 / UTF-8 字符串 | UTF-8 文本 | 可以直接看到原始内容,复制也更方便。 |
| 文件或压缩片段 | 十六进制或下载结果 | 更容易判断文件头、魔数或后续处理路径。 |
Authoritative References
- Bitcoin WikiBitcoin Wiki - Base58Check Encoding
- WikipediaWikipedia - Base58
- GitHubIPFS CID Specification
- GitHubBitcoin BIP-0173 Bech32
- 安全字符串比较
- 二进制编码解码
- 凯撒密码
- 摩尔斯电码
- 十六进制编码解码
- 视频转 Base64
- Base64 转视频
- 图片转 Base64
- Base64 转图片
- 文本转 Base64
- Base64 转文本
- 文件哈希校验
- 文件转 Base64
- Base64 转文件
- 音频转Base64
- Base64转音频
- AES 加密解密
- DES 加密解密
- Base32 编码解码
- Base58 编码解码
- Base64 编码
- Base64 解码
- Base64 比较
- Base64 拆分
- Base64 多行合并
- Base64 格式化
- Base64 格式校验
- Base64 批量编码
- Base64 批量解码
- Base64 清理
- Base64 填充处理
- Base64 长度统计
- Base64 转十六进制
- Base64 DataURL 转换
- Base64-Hex 互转
- Base85 编码解码
- HMAC 生成与验证
- PBKDF2 密钥派生
- MD5 哈希值
- SHA-256 哈希
- SHA1 哈希
- SHA512 哈希
- JWT 解码、验证与生成
- HTML 编码解码
- Unicode 转义
- URL 编码
- URL Safe Base64
- MIME Base64
- Java 代码混淆
- JavaScript 代码混淆
- PHP 混淆
- Python混淆