密码学系列 - 私钥, 公钥 与 地址

私钥, 公钥 与 地址

私钥:
私钥本质上是一个随机数,由32个byte组成的数组,1个byte等于8位二进制,一个二进制只有两个值0或者1

公钥:
公钥是由私钥通过椭圆曲线加密算法(ECDSA)生成的,一个私钥经过椭圆曲线变换之后能够得到公钥,公钥是由65个byte组成的数组(未压缩)

地址:
地址是由公钥变换得到, 通常包含的信息: 类型, 公钥映射, 检验位, bash58

公钥的作用:
对于私钥,公钥和地址来说,公钥作为私钥到地址的中间桥梁,他在交易的验证是最关键的:

  1. 公钥生成地址,验证发送交易的地址是否和该公钥生成的地址一致
  2. 公钥验证私钥的签名,用来验证该交易是否使用了正确的私钥签名
  3. 私钥生成公钥是成对出现,公钥可以生成对应的唯一地址,这样就能确认了该地址发送的交易是否使用了对应的私钥

私钥, 公钥 与 地址

哈希算法 私钥编码
(长度不算0x)
从私钥生成公钥 从公钥生成地址
BTC SHA2-SHA256 WIF格式
Base58并压缩
字符串长度52
ECDSA-secp256k1
未压缩: 前缀04+x坐标+y坐标
压缩: 前缀03+x(如果y是奇数),前缀02+x(如果y是偶数)
Base58+
RipeMD160(SHA256(PubK))
ETH SHA3-Keccack 16进制表示,
字符串长度64
字符串长度40(不算0x) 公钥前加上0x
EOS SHA2-SHA256 WIF格式,Base58,
字符串长度51
ECDSA-secp256k1|r1 EOS开头,字符串长度53
未压缩: 前缀04+x坐标+y坐标
压缩: 前缀03+x(如果y是奇数),前缀02+x(如果y是偶数)
1. 根据原始的私钥生成压缩版的公钥
2. 对第1步的结果ripemd160运算
3. 对第2步的结果取前面四位作为校验和
4. 将前缀EOS和 第2步和第3步的结果拼接在一起就得到了地址
发布了58 篇原创文章 · 获赞 66 · 访问量 8158

猜你喜欢

转载自blog.csdn.net/wcc19840827/article/details/102781168