私钥、公钥和地址

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

私钥、公钥和地址
私钥、公钥和地址是如何⽣成的?
⼤体来说,地址的⽣成的流程是:私钥 -> 公钥 -> 地址。

因此地址的⽣成需要三步:
1. ⽣成⼀个随机的私钥(32字节)
2. 通过私钥⽣成公钥(64字节)
3. 通过公钥得到地址(20字节)
私钥的⽣成
私钥是⼀组64位的16进制字符,通过私钥我们能够访问⼀个账户。

以太坊的私钥⽣成是通过secp256k15曲线⽣成的,secp256k1是⼀个椭圆曲线算法,⽐特币使⽤的也是相同的曲线算法。

通过OpenSSL6我们可以⽣成⼀个椭圆曲线私钥:
$ openssl ecparam -name secp256k1 -genkey -noout
-----BEGIN EC PRIVATE KEY-----
MHQCAQEEICGlTPPQInj0R/jaa7+bjF1twiR3RDLdOChSq98L5FmWoAcGBSuBBAAK
oUQDQgAERynScthXq2n4Ahkfp08s/QNogZEtVCfQE/XTvpjsnIeQEZGJIOb+Liyl
uF8PIerBE1CjvCs5LLU+fZz+B31+Bg==
-----END EC PRIVATE KEY-----
公钥的⽣成
其实,通过OpenSSL我们可以同时得到私钥和公钥:
$ openssl ecparam -name secp256k1 -genkey -noout | openssl ec -text -noout
read EC key
Private-Key: (256 bit)
priv:
3f:64:bb:20:0a:b5:82:e9:73:03:8a:8b:79:68:62:
41:8b:98:a7:10:00:fb:50:de:c4:4d:0d:06:3d:a2:
ed:cd
pub:
04:4a:18:c2:c7:40:f4:9a:77:b2:89:e9:27:0c:39:
94:8b:94:10:a1:b0:c9:81:d9:af:06:8c:06:23:93:
63:d7:26:82:fd:b0:22:fe:f6:7f:4f:8a:69:58:2f:
98:3a:b3:94:ab:5f:06:85:4c:25:f3:3d:8e:f1:35:
2f:e7:fe:50:4d
ASN1 OID: secp256k1
地址的⽣成
地址是通过对上述的公钥做Keccak-256哈希7,然后取最后的40位16进制字符得到的。

我们对上述的公钥做哈希后并取后40位的结果是:0x24602722816b6cad0e143ce9fabf31f6026ec622。

得到的该结果就是⼀个有效的以太坊地址。

相关文档
最新文档