公钥和钱包地址有什么区别?以比特币和以太坊为例

 / 
2

公钥和钱包地址不是一回事,但在日常使用中经常被混着叫。简单说:公钥是密码学上的中间产物,钱包地址是公钥经过哈希和编码后得到的短字符串,专门给你用来收款和公开分享。比特币和以太坊的生成路径略有不同,但核心逻辑一致——地址由公钥单向推导而来,反过来不行。

欧易OKX交易所
全球领先的加密货币平台,适合新手与进阶交易者
新手福利:注册即享20% 交易手续费减免!

从私钥到地址:一条单向链

三者的关系是一条严格的单向推导链:私钥 → 公钥 → 地址。每一步都不可逆。

私钥是一个随机数。比特币和以太坊都使用 secp256k1 椭圆曲线,私钥经过椭圆曲线乘法得到公钥。知道私钥可以算出公钥,但知道公钥几乎不可能反推出私钥,这是椭圆曲线离散对数问题的难度所在。

公钥再经过哈希函数处理,最终得到地址。哈希同样是单向的,从地址无法反推公钥,从公钥也无法反推私钥。

比特币:公钥哈希后还要加校验和

比特币的地址生成多了一步。公钥先做 SHA-256,再做 RIPEMD-160,得到 20 字节的公钥哈希。然后加上版本号前缀,计算校验和,最后用 Base58 编码,才得到你看到的以"1"或"3"开头的比特币地址。

这个额外哈希层有两个实际作用。一是缩短长度,公钥本身是几十字节的字符串,直接给人看和输入都不方便。二是增加一层安全缓冲:即使未来椭圆曲线算法出现弱点,攻击者还需要再攻破哈希函数才能触及私钥。

比特币还有一个值得留意的特性:在标准的 P2PKH 交易中,公钥在你第一次从这个地址花钱之前不会出现在链上。地址只是公钥的哈希。当你花费时,公钥才会在交易脚本中公开。这意味着一个只收过款、从未花过款的比特币地址,其公钥对公众是不可见的。

以太坊:公钥直接截取哈希后 20 字节

以太坊的路径更短。公钥(去掉开头的 0x04 前缀后)直接做 Keccak-256 哈希,取结果最后 20 字节,就是以太坊地址。没有比特币那样的 Base58 编码和校验和步骤,以太坊地址通常显示为"0x"开头的 40 个十六进制字符。

以太坊地址从公钥推导的方式决定了:以太坊地址和公钥的关系比比特币更直接,但单向性不变。你仍然无法从地址反推公钥。

日常使用中该关注什么

对普通用户来说,真正需要记住的区别只有一点:地址是给别人看的,公钥不需要主动出示。你在交易所充值、朋友转账、收款时提供的都是地址。钱包软件在后台处理公钥,你通常看不到也不需要看到它。

如果有人向你索要"公钥"来转账,正确的做法是给地址。公钥本身在大多数钱包界面里不直接展示,而且给地址已经足够完成收款。反过来,任何索要私钥或助记词的行为都应拒绝,无论对方自称是什么身份。

一个可以自行判断的例子:如果你在区块浏览器上查一个比特币地址,看到的是交易记录和余额,看不到公钥——除非这个地址已经花过款。这正好印证了地址是公钥的哈希、公钥默认不公开的机制。

欧易OKX交易所
全球领先的加密货币平台,适合新手与进阶交易者
新手福利:注册即享20% 交易手续费减免!

参考资料

  1. CryptoCurrency Certification Consortium·What's the Difference Between a Key and a Wallet address? 2026-10-29
  2. Acquire.Fi·What is a Public Key in Crypto 2026-10-29
  3. 廖雪峰的官方网站·公钥和地址 2026-10-29
  4. ethereum.org·Key pair — ETH.BUILD 2026-10-29
  5. pub.dev·EthereumAddress.fromPublicKey 2026-10-29
  6. pub.dev·address property (EthPrivateKey) 2026-10-29