Skip to content

ETH #1:公钥与私钥

掌握非对称加密是理解区块链的第一步。私钥是你对链上资产的唯一控制凭证,公钥用于生成地址和验证签名。


核心概念

私钥(Private Key)

私钥是一个随机生成的 256 位数字(32 字节),本质上就是一个非常大的随机数。在十六进制下,它看起来像这样:

e9873d79c6d87dc0fb6a5778633389f4453213303da61f20bd67fc233aa33262

私钥的安全性来源于其巨大的可能空间:2^256 ≈ 10^77,这个数字比可观测宇宙中的原子数量还要多。所以两个人"碰巧"生成相同私钥的概率几乎为零。

公钥(Public Key)

公钥由私钥通过 椭圆曲线数字签名算法(ECDSA) 计算得到。以太坊和比特币都使用 secp256k1 曲线。

公钥可以公开分享,因为从公钥无法反推出私钥(单向函数)。

地址(Address)

以太坊地址 = 公钥经过 Keccak-256 哈希 → 取后 20 字节 → 加 0x 前缀。

密钥生成流程

256位随机数

ECDSA
secp256k1 曲线
点乘运算

Keccak-256 哈希
取后 20 字节

🎲 随机数生成器

🔑 私钥
32 字节

📢 公钥
64 字节
(未压缩)

📍 地址
20 字节
0x...

数字签名

数字签名用于证明"这笔交易确实是由私钥持有者发起的",而不需要暴露私钥本身。

Bob(验证方)区块链网络Alice(发送方)Bob(验证方)区块链网络Alice(发送方)验证通过 ✅确认是 Alice 发起的用私钥对交易数据签名发送交易 + 签名广播交易用 Alice 的公钥验证签名

签名过程(简化)

  1. 对交易数据做哈希,得到消息摘要 h
  2. 用私钥 k 和随机数 r 计算签名 (r, s)
  3. 任何人都可以用公钥验证 (r, s) 是否与 h 匹配

为什么用 ECDSA 而不是哈希函数?

哈希函数是纯粹的单向函数——输入和输出之间没有数学关系,只能验证"是否相等"。

ECDSA 基于椭圆曲线的数学结构,私钥和公钥之间存在确定的数学关系,这使得:

  • 从私钥可以计算出公钥(正向容易)
  • 从公钥无法反推私钥(反向极难)
  • 可以用私钥"签名",用公钥"验证"——这是哈希函数做不到的

以太坊 vs 比特币的地址生成对比

比特币

以太坊

🔑 公钥(相同的 secp256k1)

Keccak-256 哈希

取后 20 字节

0x 前缀 → 地址

SHA-256 哈希

RIPEMD-160 哈希

Base58Check / Bech32 编码 → 地址

学习资源