以太坊中的secp256k1

非对称加密在工作中是经常用到的,比如有 RSA,ED25519,secp256k1.

在区块链生态大多数公链使用的 secp256k1, 比如:eth。除此之外也有少数公链使用的 ed25519,比如:solana.

通常在非对称加密我们使用私钥签名,用公钥验证。secp256k1 可以在不知道公钥的情况下验证:通过签名结果+原数据可以得出公钥来。

secp256k1 整体流程:

  1. 生成公私钥
  2. 公钥 -> 地址:keccak256(公钥)取后 20 位就是地址
  3. 私钥签名: 在 sepc256k1 中,使用私钥签名,签名结果 65 字节,可以分为:r,s,v。r: 32 字节, s: 32 字节,v: 1 字节。
    在 EVM 中:
    signature = r+s
    recovery = v + 27;
  4. 还原公钥:根据 message(原数据) + signature + recovery