1. 程式人生 > >以太坊賬戶私鑰、公鑰、地址的生成

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

偽隨機 private there tar 生成 pubkey 流程 比特幣 私鑰

對比上一篇比特幣賬戶私鑰、公鑰、地址的生成,現在再總結對比一下以太坊中地址生成的不同之處。

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

以太坊地址生成的流程也是:私鑰 -> 公鑰 -> 地址。因此地址的生成需要三步:

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

私鑰推導公鑰

私鑰是一組64位的16進制字符,通過私鑰我們能夠訪問一個賬戶。以太坊的私鑰生成是通過secp256k1橢圓曲線算法生成的,secp256k1是一個橢圓曲線算法,同比特幣。

公鑰推導地址

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

以太坊地址生成的過程

第一步:私鑰 (private key)

  偽隨機數經secp256k1曲線生成(256bit 16進制32字節)

  18e14a7b6a307f426a94f8114701e7c8e774e7f9a47e2c2035db29a206321725

第二步:公鑰 (public key)

  1. 拿私鑰產生的256bit私鑰經secp256k1橢圓曲線推出的公鑰(前綴04+X公鑰+Y公鑰):

  04 50863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b2 3522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6  

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

  600ffe422b4e00731a59557a5cca46cc183944191006324a447bdb2d98d4b408

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

  5cca46cc183944191006324a447bdb2d98d4b408

第三步:地址 (address)

  0x5cca46cc183944191006324a447bdb2d98d4b408

筆記參考:

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

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