以太坊使用ECDSA生成私钥,使用的曲线是secpk256k1。
私钥长度为32 bytes
公钥由私钥生成,公钥格式一般为SEC1,具体参考SEC 1, Version 2.0, Section 2.3.3. SEC 1 PDF
以太坊地址生成过程:
- 由私钥生成公钥
- 将公钥序列化为SEC1格式,使用uncompress
- 去掉公钥的0x04前缀
- 使用keccak256对去掉前缀的公钥进行hash
keccak256(public_key[1:])
- 取hash结果的后20bytes (后40个字符),即为该私钥的以太坊地址
Rust代码示例:
use secp256k1::{
ecdsa::RecoverableSignature, Message, PublicKey, Secp256k1, SecretKey};
use sha3::{
Digest