主页 > imtoken如何安装 > [C语言与以太坊] 1.0 如何根据私钥生成以太坊地址

[C语言与以太坊] 1.0 如何根据私钥生成以太坊地址

imtoken如何安装 2023-04-26 05:56:40

1.使用的库

Linux下需要从源码编译安装以下库

哈希:libtomcrypt

签名:libsecp256k1

* 构建libsecp256k1时,必须使用参数“./configure --enable-module-recovery”实现后续文章中的签名

2.原理

1.从secp256k1椭圆曲线(前缀04+X+Y)上的256位私钥计算出公钥

2. 去掉公钥的前缀04,计算其32字节的keccak256哈希值

3.取上一步哈希值的后20字节,即以太坊地址

三、实现

1.包含所需的头文件

2、打印十六进制字节流的辅助函数

3. 声明并定义私钥。 私钥一共256位,用一个长度为32的字符数组表示,数组的每个元素可以存储2个十六进制数(本示例代码中私钥中没有硬币0.0)

4. 根据私钥生成公钥。 需要注意的是,在序列化的时候以太坊根据地址计算私钥,最后一个参数需要使用宏SECP256K1_EC_UNCOMPRESSED将公钥序列化为65字节的无压缩形式

以太坊地址区分大小写_以太坊根据地址计算私钥_以太坊钱包地址

5. 将之前序列化的公钥去掉04前缀以太坊根据地址计算私钥,进行hash。 哈希值的最后20个字节是以太坊地址对应的私钥

4.完整代码

5.结果展示

将源码保存为PriKeyToAddr.c并编译运行

结果如下

以太坊钱包地址_以太坊地址区分大小写_以太坊根据地址计算私钥

运算结果

正是钱包中显示的地址

以太坊钱包地址_以太坊地址区分大小写_以太坊根据地址计算私钥

钱包中的私钥和地址