上传文件
  1. base64hub
  2. 其他进制编码
  3. Base58 转 Base64

Base58 转 Base64:转换密钥和哈希

粘贴一个 Base58 值(例如 Solana 地址或 IPFS Qm… 哈希),得到相同字节的标准 Base64。每个开头的 1 都会保留为零字节,所以字节数分毫不差。

免费 无需注册,不限次数 本地 不上传任何内容 字节精确 保留前导零 更新于 2026年10月27日
输入 0字节 0 B输出 0

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何把 Base58 转换为 Base64

  1. 把 Base58 字符串粘贴到 输入 · Base58 中。换行和空格会被忽略。
  2. 如果它使用的不是比特币字母表,请把输入下方的 字母表 改为 Flickr 或 Ripple。
  3. 在 输出 · Base64 中读取 Base64。在输出下方取消勾选 填充(=) 可得到不带填充的 Base64,或者把 换行 设为 64 或 76 列。
  4. 点击 复制输出;也可以在方向切换中使用 Base64 → Base58 进行反向转换,Base64 转 Base58 页面默认就是这个方向。

工具下方的计数器会显示输入长度、解码后的 字节 数和输出长度。字节数是检查你是否粘贴了完整密钥的最快方法:Solana 公钥为 32,签名或密钥对为 64,IPFS CIDv0 为 34。

示例

Base58Base64字节
9AjdvzrSGVsbG8=5,文本 Hello
11111111111111111111111111111111AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=32 个零字节
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk=32,Solana SPL Token 程序
QmQudp5N7EzTxrBk3yESEKyEroMYNd7R22G2KWffwNZyzqEiAmKoa2duWGnt1dGt+P/QHWKcMVS/3q7PyM+g2Q4Igtig==34,IPFS CIDv0
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNaAGLpB7FcvyfVQlOZ6/bw+1DruI8Ywpt9kw==25,带校验和的比特币地址

每个 CIDv0 转换为 Base64 后都以 EiA 开头:这就是 multihash 头部 12 20(SHA-256,32 字节)。去掉前两个字节,就得到了纯摘要,也就是 SHA-256 工具输出的形式。

为什么 Solana 数据会同时以两种编码出现

在钱包和区块浏览器中,Solana 用 Base58 显示公钥、程序 ID 和交易签名。而它的 JSON-RPC API 接受 Base64 或 Base58 格式的序列化交易,并把 Base58 标记为速度较慢、已弃用的选项。当你请求 Base64 编码时,账户数据也会以 Base64 返回。所以同一个 32 字节的密钥,可能在一处以 Base58 出现,在另一处则包含在 Base64 中。

转换不会改变字节,因此可以放心地用它来比较两个值:如果一个 Base58 密钥和一个 Base64 密钥在这里得到相同的 Base64,它们就是同一个密钥。

用 Python 把 Base58 转换为 Base64

标准库有 Base64 但没有 Base58,所以前半部分是一个简短的循环:

import base64

ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"

def base58_to_base64(s: str) -> str:
    n = 0
    for ch in s:
        n = n * 58 + ALPHABET.index(ch)
    body = n.to_bytes((n.bit_length() + 7) // 8, "big")
    zeros = len(s) - len(s.lstrip("1"))
    return base64.b64encode(b"\0" * zeros + body).decode()

base58_to_base64("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA")
# 'Bt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKk='

遇到 0 或 l 等 Base58 以外的字符时,ALPHABET.index 会抛出 ValueError。更多 Python 中的 Base64 处理见 Python 页面。

常见问题

  • 字节数少了一个。你之前用的转换器丢掉了一个前导零字节。本页会保留它们;可以对比两者的输出。
  • 在 0、O、I 或 l 处报错。这些字符不属于 Base58。请检查是否有复制或 OCR 识别错误。
  • 输入以 bc1、0x 或 bafy 开头。它们分别是 Bech32、hex 和 Base32(IPFS CIDv1),都不是 Base58。对于 CIDv1,Base32 解码器说明了如何读取。
  • 输出比预期多 4 个字节。这个字符串是 Base58Check,校验和仍然附在后面。

常见问题

如何把 Solana 公钥转换为 Base64?

把地址粘贴到输入框中即可。有效的 Solana 公钥解码后恰好是 32 个字节,所以 Base64 输出总是 44 个字符并以一个 = 结尾,不带填充时为 43 个字符。

为什么 Base64 以 A 开头?

Base58 输入以 1 开头,它解码为一个零字节。Base64 的第一个字符取自前 6 个比特,而六个零比特就是 A。所以比特币地址 1A1zP1… 会变成 AGLp…。

怎样得到 URL 安全的 Base64?

把结果复制到 Base64 转 Base64URL,它会把 + 和 / 换成 - 和 _,并去掉填充。如果只需要去掉 =,在这里取消勾选 填充(=) 即可。

Base58Check 字符串的输出会不同吗?

转换方式相同,但得到的 Base64 会包含版本字节和 4 字节校验和。如果只需要载荷,请先用 Base58Check 工具解码。