主页 > 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并编译运行
结果如下
运算结果
正是钱包中显示的地址
钱包中的私钥和地址