ECDSA是 基于椭圆曲线(Weierstrass 曲线)密码学(ECC)的一种 数字签名算法
Tips:
基于椭圆曲线(Weierstrass 曲线)意味着 支持: secp系列(secp256k1...), Brainpool系列(brainpoolP256r1...), NIST P 系列(secp256r1...)
关键特点: 需要随机数Nonce
签名和验签流程:
假设 A和B两个用户, A 签名信息 B验证信息
通信双方A和B, 已知信息有:
1. A 生成自己的公钥私钥
2. 在
3. 计算第2步的随机私钥对应的公钥,
4. 计算 "s",
5. 发送将 A 的公钥 HA, 消息 m, 签名数据 r 和 s , 发送给 B
k-1 表示在模 n 下的乘法逆元。 乘法逆元
1. 计算v1
2. 计算v2
3. 计算P
公钥: |
私钥: |
签名Hash数据: |
签名数据hash: |
自定义Nonce |
Signature |
R |
S |
Msg Hash |
ECDSA签名 |
DER 编码 |
公钥: |
签名数据Hash: |
Signature |
R |
S |