以太坊帳戶私鑰、公鑰、地址的生成

對比上一篇比特幣帳戶私鑰、公鑰、地址的生成,如今再總結對比一下以太坊中地址生成的不一樣之處。html

私鑰、公鑰和地址是如何生成的?

以太坊地址生成的流程也是:私鑰 -> 公鑰 -> 地址。所以地址的生成須要三步:算法

  1. 生成一個隨機的私鑰(32字節)
  2. 經過私鑰生成公鑰(64字節)
  3. 經過公鑰獲得地址(20字節)

私鑰推導公鑰

私鑰是一組64位的16進制字符,經過私鑰咱們可以訪問一個帳戶。以太坊的私鑰生成是經過secp256k1橢圓曲線算法生成的,secp256k1是一個橢圓曲線算法,同比特幣。htm

 

公鑰推導地址

和比特幣相比,在私鑰生成公鑰這一步實際上是同樣的,區別在公鑰推導地址第一部分,以太坊中非圧縮型公鑰的處理就簡單粗暴不少了,下圖爲Public Key生成Address的過程。blog

 

以太坊地址生成的過程

第一步:私鑰 (private key)get

  僞隨機數產生的256bit私鑰示例(256bit  16進制32字節)hash

  18e14a7b6a307f426a94f8114701e7c8e774e7f9a47e2c2035db29a206321725it

第二步:公鑰 (public key)比特幣

  1. 採用橢圓曲線數字簽名算法ECDSA-secp256k1將私鑰(32字節)映射成公鑰(65字節)(前綴04+X公鑰+Y公鑰):基礎

  04
  50863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b2352
  2cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6隨機數

       2. 拿公鑰(非壓縮公鑰)來hash,計算公鑰的 Keccak-256 哈希值(32bytes):

  fc12ad814631ba689f7abe671016f75c54c607f082ae6b0881fac0abeda21781

       3. 取上一步結果取後20bytes即以太坊地址:

  1016f75c54c607f082ae6b0881fac0abeda21781

第三步:地址 (address)

  0x1016f75c54c607f082ae6b0881fac0abeda21781

 

 

筆記參考:

【Ethereum基礎】:帳戶、地址、私鑰和公鑰

相關文章
相關標籤/搜索