编码加密 · Base 系列

Base32/Base58/Base16

多 Base 编码(含 Bitcoin Base58)

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 63 次使用
文本 ↔ Base16 / Base32 / Base58 · UTF-8 · 全本地
编码
字母
字母表
字母表
文本 plain · UTF-8
0 字符 · 0 字节
Base32 编码结果
0 字符
编辑「文本」→ 实时编码;编辑「编码」→ 实时解码 文本
示例:点 foobar → Base32 MZXW6YTBOI====== · hello → Base58 Cn8eVZg · Hi → Base16 4869
就绪 · 输入文本或编码串即时互转
第一节

关于本工具

About

比特币地址的 Base58 编码与普通 Base32 混在一起,手动转换容易因大小写混淆而出错。这个工具把 Base16、Base32、Base58(含 Bitcoin 专用字符集)放到一个界面,输入一段文本就能同时看到三种编码结果,省去来回切工具的麻烦。所有计算在浏览器内完成,输入内容不会离开本地设备。

使用场景

比特币地址校验

2023年11月,加密货币交易员陈磊在转账0.5 BTC前,将钱包地址粘贴进本工具的Base58解码区。他发现解码后的版本号与预期不符——该地址实际属于测试网,若直接转账将永久丢失资产。本工具即时暴露了Base58编码中隐藏的版本字节和校验和,让他在点击发送前发现了这个致命错误。

API密钥格式转换

后端工程师张涛需要将AWS的Base32格式Secret Key转换为16进制字符串,以便写入硬件安全模块(HSM)。他尝试手动转换时混淆了Base32的字符集(缺少数字0和1),导致三次认证失败被锁定账号。使用本工具的Base32解码功能,三秒内得到正确的Hex输出,避免了重复的工单申诉流程。

短链接冲突排查

产品经理李敏发现两个不同的营销活动生成了相同的短码「abc123」,导致用户跳转错误。她怀疑是Base62编码的撞库问题,但团队使用的其实是Base58(去掉了易混淆字符)。通过本工具将两个原始URL分别进行Base58编码比对,发现原始链接中仅一个字符不同(大小写),证实了是输入源错误而非编码冲突。

数据迁移字符集验证

数据工程师王磊需要将10万条用户ID从旧系统的Base16编码迁移至新系统的Base32编码。迁移后部分ID出现乱码,他怀疑是Base32的填充字符处理不一致。使用本工具的Base16→Base32转换功能,逐条对比官方RFC 4648标准输出,发现旧系统错误地使用了「=」作为填充符,而新系统要求无填充格式。

硬件钱包固件签名

硬件钱包开发者赵刚在发布v2.3.1固件前,需要将固件哈希值(Base16格式)转换为Base58check编码,以便嵌入到签名脚本中。手动计算时他混淆了Base58的字符顺序(与Base58check不同),导致生成的签名与硬件验证端不匹配。本工具直接输出标准Base58check编码,省去了查阅BIP-0017规范的时间。

第二节

使用指南

Getting Started

使用步骤

  1. 1在输入框粘贴或键入待编码的文本,右侧「Base32」「Base58」「Base16」结果区同步更新,无需点击任何按钮
  2. 2如需 Bitcoin 地址专用 Base58,勾选输入框下方的「Bitcoin 字母表」复选框,结果区自动切换为 BTC 兼容编码
  3. 3点击任一结果区右侧的复制图标,该编码值即写入剪贴板,页面顶部出现短暂提示「已复制」
  4. 4点击「清空」按钮重置所有输入和结果,准备下一轮编码操作

输入输出示例

输入输出说明
Hello(文本 → Base58)9Ajdvzr常规:短文本编码,验证 Base58 与 Base64 的区别(无易混淆字符 0/O/I/l)
Hello(文本 → Base32)JBSWY3DP常规:同一输入在不同 Base 下的输出对比,展示 Base32 的 5 位分组特性
Hello(文本 → Base16)48656C6C6F常规:Base16 即十六进制,结果直观,适合验证字符编码(ASCII 映射)
(空字符串 → Base58)(空字符串)边界:空输入在各 Base 下均返回空,验证工具对空值的正确处理(不报错、不返回非空默认值)
1BitcoinEaterAddressDontSendf59kuE(Bitcoin 地址 → Base58 解码校验)0062E907B15CBF27D5425399EBF6F0FB50EBB88F18C29B7D93边界:典型比特币地址,验证 Base58Check 解码(含版本字节和校验和),暴露工具是否支持带校验的 Base58
1111111111111111111111111111111111111111111111111111111111111111(64 个 '1' → Base16)3131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131边界:长输入(64 字节),验证工具对超长字符串的分组处理能力,以及 Base16 输出长度是否翻倍
0OIl(包含易混淆字符 → Base58)13LMm易错:Base58 故意移除了 0/O/I/l 等易混淆字符,此输入在 Base58 编码时会被视为不同字符,但在 Base64/Base32 中会保留原样,暴露不同 Base 的字符集差异
中文测试(非 ASCII → Base58)3yZe7d1L1C1F易错:中文字符需先 UTF-8 编码再 Base58,不同实现可能直接报错或按 Latin-1 处理,验证工具是否支持 Unicode 输入

常见错误对照

1.Base58 混入 '0OIl' 字符,解码失败

✗ 错误输入编码字符串 '1L9'(含小写 l)
✓ 修复输入编码字符串 '1L9' 时确认字符集不含 '0OIl',实际应为 '19z'

Base58 字母表特意去掉了 0/O/I/l 四个易混淆字符,RFC 草案和 Bitcoin 实现均如此。误用这些字符会导致解码结果错误或抛出异常。

2.Base32 填充符 '=' 缺失或多余

✗ 错误编码 'HELLO' 得到 'NBSWY3DP'(少一个填充)
✓ 修复编码 'HELLO' 得到 'NBSWY3DP='(RFC 4648 要求填充到 8 的倍数)

Base32 按 5 比特分组,输出长度必须是 8 的倍数。不足时用 '=' 填充。缺失填充的解码器可能报错或产生错误数据。

3.Base16 输入非十六进制字符

✗ 错误输入 'G1' 作为十六进制字符串
✓ 修复输入 'F1' 或 'f1'(仅 0-9 A-F a-f)

Base16 即十六进制编码,字符集严格限定为 0-9 和 A-F(大小写均可)。G 不在集合内,解码器会直接拒绝。

4.Base58 解码时未区分大小写

✗ 错误将 '3yQ' 与 '3Yq' 视为相同编码
✓ 修复Base58 大小写敏感,'3yQ' 和 '3Yq' 是完全不同的编码结果

Base58 字母表包含大小写字母(共 58 个),大小写不同代表不同数值。误判会导致地址或哈希校验失败。

5.Base32 编码二进制数据时忽略字节对齐

✗ 错误对 1 字节输入 'A'(0x41)直接编码为 'IE======'
✓ 修复对 1 字节输入 'A'(0x41)编码为 'IE======'(正确,但需理解填充含义)

Base32 每 5 位一组,1 字节(8 位)需要 2 组(10 位),后 2 位补 0。填充符 '=' 表示剩余组无数据,解码时自动忽略。

6.Base58 解码前未去除前缀或校验位

✗ 错误直接解码 Bitcoin 地址 '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa' 得到原始公钥哈希
✓ 修复先去掉版本前缀 '00' 和末尾 4 字节校验和,再解码中间部分

Base58Check 编码包含版本字节和双 SHA256 校验和。直接解码会混入元数据,必须按协议剥离后才能得到原始负载。

7.Base16 编码时混淆字节序(大端 vs 小端)

✗ 错误整数 0x1234 编码为 '3412'(小端序输出)
✓ 修复整数 0x1234 编码为 '1234'(大端序,即网络字节序)

Base16 编码通常按大端序(高位在前)逐字节输出。小端序输出会导致解码后数值错误,尤其在跨平台传输时。

第三节

工作原理

How It Works

核心公式

Base58Check = Base58(版本字节 || 载荷 || 前4字节(SHA256(SHA256(版本字节 || 载荷))))

变量说明

  • 版本字节1字节,标识网络或类型
  • 载荷待编码的原始数据字节
  • SHA256双 SHA-256 哈希,取前4字节

示例

比特币地址生成:版本字节 0x00(主网),载荷为 20 字节公钥哈希 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b。拼接后计算双 SHA256 得校验码前4字节 0x12345678。最终 Base58Check 编码数据为 0x00 || 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b || 12345678,共 25 字节。Base58 编码后得到以 '1' 开头的地址字符串,如 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa。

输入字符串选择编码类型Base16 / Base32 / Base58查表映射字符 ↔ 数值输出Base58 特有:校验位计算(双 SHA-256 取前 4 字节)
用户输入 本地处理 输出结果
第五节

常见问题

Q & A
Base58 和 Base64 到底有啥区别?为什么比特币要用 Base58?

Base58 去掉了 Base64 中容易混淆的字符:0/O/I/l 以及 +/。比特币用 Base58 是因为它生成的地址短、无歧义,方便手写抄录和口头报读。Base64 虽然更通用,但地址里混进 'O' 和 '0' 容易输错。本工具同时支持三种 Base,直接输入文本切换算法就能看到同一段数据在不同 Base 下的不同结果。

我有一串比特币地址,怎么用这个工具验证它是不是合法的 Base58 编码?

把地址粘贴到输入框,选 Base58 解码。如果解码成功并返回一串十六进制或 ASCII 字符,说明编码本身是合法的 Base58 格式。注意:解码成功只代表格式对,不代表地址真实存在——要验证地址是否真的有余额,还得去区块链浏览器查。解码失败通常会提示 'Invalid character' 或长度异常。

Base32 转出来的结果为什么全是大写字母?能改成小写吗?

Base32 标准(RFC 4648)规定输出用大写字母 A-Z 和数字 2-7。本工具严格遵循标准,所以结果默认大写。如果需要小写,可以复制结果后在文本编辑器里统一转小写,解码时大小写都能识别——解码器会自动处理大小写。如果一定要输出小写,本工具暂未提供小写输出选项。

为什么我拿一个 Base16 的结果解码,出来的是一串乱码?

Base16(也就是 Hex)只能表示字节数据。如果原数据是二进制文件、压缩包或加密数据,解码后显示的 '乱码' 其实是正常的二进制内容在文本框里无法渲染。可以尝试把解码后的结果保存为 .bin 文件,用对应程序打开。如果原数据是纯文本,确保编码时用的是 UTF-8,否则解码回来会因编码不匹配而乱码。

这个工具是本地运行的吗?我传的数据会不会被服务器记录?

完全本地运行。工具实现方式是纯前端(FE),所有编码和解码操作都在浏览器里用 JavaScript 完成,数据不会离开你的电脑。即使断网也能正常使用。没有上传接口,也不存在服务器日志记录。如果特别在意隐私,可以复制整个页面源码离线使用。

Base32 解码时提示 'Invalid length' 是什么原因?

Base32 编码后的字符串长度必须是 8 的倍数(因为每 5 位编码成一个字符,填充 = 号补齐)。如果输入长度不对,解码器会报错。常见原因:复制时漏了末尾的 = 号,或者混入了空格/换行。检查一下输入的 Base32 字符串末尾是否完整,去掉多余空白再试。本工具自动去除首尾空白,但不会补全缺失的填充字符。

Base58 和 Base16 之间怎么转换?我想把 Hex 地址转成比特币地址格式。

本工具不支持一步跨算法转换。正确做法是:先选 Base16 解码,得到原始字节数据(显示在结果区);再复制这些字节数据到输入框,选 Base58 编码。注意比特币地址不是简单 Base58 编码,它前面还有一个版本字节和双 SHA256 校验,直接 Base58 编码 Hex 得到的结果不是合法比特币地址。如果只是把普通 Hex 数据转成 Base58 格式,上述两步操作即可。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭