博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ethereum地址是如何生成的
阅读量:6290 次
发布时间:2019-06-22

本文共 1682 字,大约阅读时间需要 5 分钟。

eth

来自

btc address: 1FmWXNJT3jVKaHBQs2gAs6PLGVWx1zPPHf

eth address: 0xd91c747b4a76B8013Aa336Cbc52FD95a7a9BD3D9

以太坊生成地址的方式跟比特币比较类似,也是 私钥 -> 公钥 -> 地址,以太坊只是在公钥 -> 地址做了简化。

以太坊使用Secp256k1椭圆曲线得到私钥、公钥,比特币使用的也是相同的椭圆曲线算法。
得到公钥后,对公钥做Keccak-256哈希运算,然后取最后的40位16进制字符,得到的就是以太坊地址。

生成以太坊地址跟比特币地址都是不需要连接网络的

python code 生成以太坊地址

python首先安装类库

pip install ecdsa
pip install pysha3

import binasciiimport sha3from ecdsa import SigningKey, SECP256k1priv = SigningKey.generate(curve=SECP256k1) #生成私钥pub = priv.get_verifying_key() #生成公钥keccak = sha3.keccak_256()keccak.update( pub.to_string()) #keccak_256哈希运算address = "0x" + keccak.hexdigest()[24:]priv_key = binascii.hexlify( priv.to_string())pub_key = binascii.hexlify( pub.to_string())print("Private key: " + priv_key.decode() )print("Public key:  " + pub_key.decode() )print("Address:     " + address)# Address: 0xd38d3c226d0a86ce9932608edac39163fcbc550e

来个骚操作,用同一份私钥来管理比特币与以太坊

既然以太坊使用Secp256k1椭圆曲线得到私钥、公钥,比特币使用的也是相同的椭圆曲线算法

那我们就用 得到的公钥

04d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f691757b28e31be71f09f24673eed52348e58d53bcfd26f4d96ec6bf1489eab429d,生成一个以太坊地址。
这个公钥是通过openSSL得到的未压缩公钥,以太坊不需要使用这种类型的公钥,只要把首位的04去掉即可。

import sha3import binascii_openssl_pub_key= "04d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f691757b28e31be71f09f24673eed52348e58d53bcfd26f4d96ec6bf1489eab429d"_pub_key = _openssl_pub_key[2:]_pub_hex = binascii.unhexlify(_pub_key)keccak = sha3.keccak_256()keccak.update(_pub_hex)address = "0x" + keccak.hexdigest()[24:]print address #0x9156a7cdab767ffe161ed21a0cb0b688b545b01f

这说明啥?我用完全相同的私钥,分别生成了比特币地址与以太坊地址,这两个完全不一样的地址用的是同一个私钥。

以太坊地址

与比特币地址 的私钥竟然是相同的。
这给资产管理带来了很大方便,但如果一份私钥泄露了,2份资产都有可能被盗。 管理一时爽,泄露全都火葬场。


参考:

转载地址:http://vhkta.baihongyu.com/

你可能感兴趣的文章
PHP使用RabbitMQ实例
查看>>
plsql导入excel文件
查看>>
疑难en_a
查看>>
[Java入门笔记] Java语言基础(四):流程控制
查看>>
cubla sample-code
查看>>
ACM中出现RuntimeError的原因及可能的解决办法
查看>>
《sift算法详解》阅读笔记
查看>>
HTML5 Web Workers 简单例子
查看>>
谈谈Mono开发的一些想法 ^_^
查看>>
数据结构 第6章 图 单元小结
查看>>
extern "C"
查看>>
JAVA构造方法
查看>>
Java中的关键字
查看>>
基础算法 ---> 二分法
查看>>
Java内部类
查看>>
数据结构和算法:队列和栈
查看>>
用户登录保存数据实例(慕课笔记 使用SharedPreferences保存用户名)
查看>>
如何判断一条sql(update,delete)语句是否执行成功
查看>>
JSONObject.parseObject(jsonStr);和JSONObject.fromObject(jsonStr);
查看>>
【集训队作业2018】小Z的礼物
查看>>