以太坊地址和公钥_以太坊-公钥私钥地址转换基础

本文详细介绍了以太坊中私钥、公钥和地址之间的转换过程,包括私钥的生成、存储,公钥的16进制表示,以及如何从私钥字符串还原地址。同时,展示了如何通过字节数据转换成地址和哈希,以及如何通过签名和摘要恢复公钥。此外,还提到了压缩公钥的概念。
摘要由CSDN通过智能技术生成

以太坊中使用的椭圆曲线是S256,私钥和HASH都为32位,公钥为65位其中第一位是压缩字节0x04,压缩公钥为33字节,地址是是公钥的后64位hash后取后20个字节作为地址。签名数据为65位,R,S各32位,65位为0和1.

生成私钥

//生成私钥

key, err := crypto.GenerateKey()

if err != nil {

t.Fatalf("failed GenerateKey with %s.", err)

}

//不含0x的私钥

fmt.Println("private key no 0x \n", hex.EncodeToString(crypto.FromECDSA(key)))

private key no 0x

b1fb9a42d8478cf19bbc1cb4e75625ced1728c8de8691845f546b2ad84a7d379

私钥存储

//本地生成privatekey文件,保存私钥

if err := crypto.SaveECDSA("privatekey", key); err != nil {

log.Error(fmt.Sprintf("Failed to persist node key: %v", err))

}

b1fb9a42d8478cf19bbc1cb4e75625ced1728c8de8691845f546b2ad84a7d379

公钥16进制打印

fmt.Println("public key no 0x \n", hex.EncodeToString(crypto.FromECDSAPub(&key.PublicKey)))

public key no 0x

0425b775a01b5df335cd71170f6a16d8b43704e68b8eb87a8e6ebfd3deafbfc1151d76bbe078002ffb7caaca06441b1c3976c3ca3b1e1fda9cf0f4591d799758e4

字符串转私钥和地址

//由私钥字符串转换私钥和地址

//由私钥字符串转换私钥

acc1Key, _ := crypto.HexToE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值