如何用比特币私钥创建以太坊地址?


如何用比特币私钥创建以太坊地址?在区块链的钱包里,私钥可以生成公钥,但不可能从公钥中计算出私钥。用公钥加密的信息可以用私钥解密,用私钥签名的信息可以用公钥验证。验证通过后,可以证明信息确实是私钥持有人发布的。BTC例如,在这个过程中最重要的角色是" 椭圆曲线加密算法"。

有人认为 BTC 跟 ETH 是不同的链条,所以椭圆曲线不同,但事实上,两条链都使用相同的 secp256k1 曲线,所以获得公钥的方式完全相同。区别在于从公钥生成地址的过程。接下来,我们将介绍如何安全生成私钥,然后解释 ETH 如何从地址验证私钥生成的公钥。

私钥的规格

私钥必须是正数,必须小于 secp256k1 曲线阶 (secp256k1 的阶为FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141),每一点都可以由一组 256代表,需要提供这个曲线算法 32 字节的数据。

换句话说,BTC 及 ETH私钥是一组 32 字节字符串,但也可以是二进制字符串Base64字符串、WIF 密钥,助记码( mnemonic phrase ),十六进制字符串。

币圈知识之如何用比特币私钥创建以太坊地址新手投币基础知识优势

生成安全的私钥

既然我们都知道他们使用相同的曲线,我们实际上可以使用 BTC 社区信任 bitaddress.org 生成我们的私钥(用 MEW 或 Metamask 也是一个不错的选择,至少他不能是一串暴露的私钥),但如果我们有良好的安全意识,我们甚至不应该使用浏览器生成重要的私钥 (你可以看到 Reddit 讨论),所以我们将使用 python设计一个更简单的 bitaddress。

了解 Bitaddress原理

Bitaddress 做了三件事。初始化字节数组,然后尝试从用户的计算机获得尽可能多的熵,根据用户的输入填满数组,最后生成私钥。

Bitaddress 用 256 字节的数组存储熵。这个数组是循环复制的,所以当数组第一次填充时,索引变为零,然后复制过程再次开始。

程序从 window.crypto 生成 256 字节数组。然后写一个时间戳来获得 4 字节的熵。之后,它获得了一些其他数据,包括屏幕大小、时间区域、浏览器扩展套件、区域等。获得另一个 6 字节。

初始化后,用户继续输入并重复初始字节。当移动光标时,程序将写入光标的位置。按下按钮时,程序将写入按钮的字符代码。

最后,bitaddress 使用累积熵生成私钥。bitaddress 用名为 ARC4 的 RNG算法。使用当前时间和收集的熵初始化ARC四、然后逐一获得字节,共取 32 次。

我们自己的种子池

从加密 开始RNG 在时间戳中写一些字节。__seed_int 以及__seed_byte两个函式将熵插入池中,而我们使用secrets产生我们的随机数。

币圈知识之如何用比特币私钥创建以太坊地址

输入填充种子池

在这里,我们先写一个时间戳,然后写入用户输入的字符串。

币圈知识之如何用比特币私钥创建以太坊地址

生成私钥

首先,使用我们的池生成 32 位数,并确保我们的私钥在范围内(1,CURVE_ORDER),然后,为了方便,我们将其转换为16进制并删除 0x 的部分。

币圈知识之如何用比特币私钥创建以太坊地址

生成ETH公钥

用椭圆曲线代替我们刚才的私钥,我们会得到 64 字节的整数,即两个 32 字节的整数,代表 连接到椭圆曲线上X 点和 Y 点。

币圈知识之如何用比特币私钥创建以太坊地址

校验和 (ERC-55)

比特币创建了创建了校准和校准,并在公钥哈希后获得回传值。如果不添加校准和,则无法获得有效地址。

但以太坊一开始并没有验证公钥完整性的机制。Vitalik Buterin 2016年引入校准机制,也就是 EIP-后来被钱包和交易中心采用。

将验证添加到以太坊钱包地址,以区分大小写

首先,获取地址Keccak-256 哈希值。需要注意的是,当地址传输到哈希函数时,不能有0x的部分。

第二,按顺序迭代初始地址的字节。如果哈希值是第 i 如果字节大于或等于 8,将是第 i 将地址的字符转换为大写,否则将其保留为小写。

最后,在回传字符串的开头加回0x。如果忽略大小写,验证和地址将与初始地址相同。但使用大写字母的地址可以检查地址是否有效。

这种验证有几个好处:

1. 向后兼容许多接受混合大小写的十六进制分析器,以后也可以轻松引入;

2. 40个字符保持长度;

3. 平均每个地址将有 15 验证位置。如果输入错误,随机生成的地址意外通过检查的净概率为0.0247%,虽然不如 4 字节的验证代码好,但比 好ICAP 提高了50倍左右;

币圈知识之如何用比特币私钥创建以太坊地址

总结

为以太坊创建钱包地址比比比特币简单得多。我们需要做的是把私钥扔到椭圆曲线上,然后把公钥扔到椭圆曲线上Keccak-最后,在哈希值后取 20 字节。

共享算法会带来恶意的挖掘攻击吗?除非你有足够的计算能力
上一篇 2022年06月20日
bithumb虚拟数字货币交易平台怎么样?中国可以注册吗?
下一篇 2022年06月20日
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 liqiaoqiant@qq.com 举报,一经查实,本站将立刻删除。

相关推荐