ECDSA 算法结构 (secp256k1)
椭圆曲线参数
y² = x³ + 7 (mod p)
p 有限域素数
G 生成点
n 曲线阶
🔑 密钥生成
1
d ∈ [1, n-1]
随机选择私钥
2
Q = d × G
计算公钥点
公钥 Q = (Qₓ, Qᵧ)
✍️ 签名过程
1
z = SHA256(m)
计算消息哈希
2
k ∈ [1, n-1]
生成随机数 k
3
R = k × G
计算曲线点 R
4
r = Rₓ mod n
取 R 的 x 坐标
5
s = k⁻¹(z + rd) mod n
计算签名 s
签名 (r, s)
验证过程
1
z = SHA256(m)
计算消息哈希
2
u₁ = zs⁻¹ mod n
计算 u₁
3
u₂ = rs⁻¹ mod n
计算 u₂
4
P = u₁G + u₂Q
计算验证点
5
Pₓ mod n = r ?
验证等式

🔬 交互式演示

生成密钥对,输入消息,观察 ECDSA 签名和验证的完整数学计算过程。

📐 ECDSA 数学原理

  • 椭圆曲线secp256k1 曲线方程 y² = x³ + 7,定义在有限域 𝔽ₚ 上
  • 标量乘法Q = d × G 通过反复的点加法实现,是单向函数
  • 模运算所有运算在曲线阶 n 下进行模运算
  • 模逆元k⁻¹ 满足 k × k⁻¹ ≡ 1 (mod n),使用扩展欧几里得算法计算