[原]以太坊地址
版权声明:本文为博主原创文章,转载请注明来源!获取更新内容请关注我的开源项目:https://github.com/zcc0721/MasterBlockchain https://blog.csdn.net/u013137970/article/details/87821243
文章目录
1 以太坊地址生成过程
以太坊地址生成过程如下:
- 生成 256 位私钥。
- 将私钥转化为 secp256k1 非压缩格式的公钥,即 512 位的公钥。
- 使用散列算法 Keccak256 计算公钥的哈希值,转化为十六进制字符串。
- 取十六进制字符串的后 40 个字母,开头加上 0x 作为地址。
2 以太坊地址生成实例
生成以太坊地址过程实例数据:
- 私钥:1f2b77e3a4b50120692912c94b204540ad44404386b10c615786a7efaa065d20
- 公钥:04dfa13518ff965498743f3a01439dd86bc34ff9969c7a3f0430bbf8865734252953c9884af787b2cadd45f92dff2b81e21cfdf98873e492e5fdc07e9eb67ca74d
- 地址:0xabcd68033A72978C1084E2d44D1Fa06DdC4A2d57
2.1 生成随机数
生成 256 位随机数:
>>> import random
>>> r = random.randint(0, 2**256)
>>> r
14098500174935566811277058424286341448580475958153633347646702637404947635488
>>> r.to_bytes(32, byteorder='big').hex()
'1f2b77e3a4b50120692912c94b204540ad44404386b10c615786a7efaa065d20'
2.2 私钥生成公钥
以太坊使用的椭圆曲线算法为 secp256k1,从私钥生成对应的公钥可以使用比特币工具 bx。Mac 用户可以使用 brew 安装 bx 工具:
$ brew install bx
以 1f2b77e3a4b50120692912c94b204540ad44404386b10c615786a7efaa065d20 作为私钥,然后使用 bx 工具将私钥转化为 secp256k1 的非压缩格式公钥:
$ bx ec-to-public 1f2b77e3a4b50120692912c94b204540ad44404386b10c615786a7efaa065d20 -u
04dfa13518ff965498743f3a01439dd86bc34ff9969c7a3f0430bbf8865734252953c9884af787b2cadd45f92dff2b81e21cfdf98873e492e5fdc07e9eb67ca74d
2.3 计算公钥哈希值
要使用 keccak256 哈希算法,可以使用 PyCryptodome 工具,使用 pip 进行安装:
$ pip install pycryptodome
公钥开头去除 04,将剩余部分转化为字节串并使用 keccak256 算法进行哈希:
>>> from Crypto.Hash import keccak
>>> keccak_hash = keccak.new(digest_bits=256)
>>> public_key = '04dfa13518ff965498743f3a01439dd86bc34ff9969c7a3f0430bbf8865734252953c9884af787b2cadd45f92dff2b81e21cfdf98873e492e5fdc07e9eb67ca74d'[2:]
>>> public_key = bytes.fromhex(public_key)
>>> keccak_hash.update(public_key)
<Crypto.Hash.keccak.Keccak_Hash object at 0x102960588>
>>> keccak_hash.hexdigest()
'39c0eb3b26d4838930b1f34babcd68033a72978c1084e2d44d1fa06ddc4a2d57'
2.4 得到地址
取哈希值十六进制字符串后 40 个字母,开头加上 0x 生成最终的以太坊地址:
>>> '0x' + '39c0eb3b26d4838930b1f34babcd68033a72978c1084e2d44d1fa06ddc4a2d57'[-40:]
'0xabcd68033a72978c1084e2d44d1fa06ddc4a2d57'

![[转]vim配置及插件安装管理(超级详细)](http://www.memleaking.com/wp-content/uploads/2018/07/e8bdacvime9858de7bdaee58f8ae68f92e4bbb6e5ae89e8a385e7aea1e79086efbc88e8b685e7baa7e8afa6e7bb86efbc89.png)
