Bitcoin 地址原理(2)私钥、公钥、地址基本概念

1. 总过程

在这里插入图片描述
在这里插入图片描述

2. 私钥

私钥就是一个随机选出的数字,256位.
eg. 8F72F6B29E6E225A36B68DFE333C7CE5E55D83249D3D2CD6332671FA445C4DD3

  • 介于(1 ~ 0xFFFFFFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之间?)

  • 私钥在钱包里也是Base58编码的形式保存

3. 公钥
在这里插入图片描述

椭圆曲线上面的一个点
. 从私钥和基点G计算得到而来: K = k * G (k是私钥,K是公钥)
. 其反向运算“寻找离散对数”"已知公钥K, G来求出私钥k"是非常困难

公钥通常表示为前缀04紧接着两个256bit的数字(520bit)
前缀04开头:04 x y

eg.
04F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB
x=F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A
y=07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB

3.1 压缩格式化公钥

  • 520bit太占空间。
  • 由于一个公钥是一个椭圆曲线上的点(x,y),而通过椭圆曲线方程可以由x得到y,所以就存x。eg. y2 mod p = (x3 + 7) mod
  • 一个x,对应的y有正和负,因此加个前缀来区分。
    在这里插入图片描述

在素数p阶的有限域上使用二进制算术计算椭圆曲线的时候,y坐标的奇偶对应椭圆曲线y值的正负。

  • 偶数:02作为前缀
  • 奇数:03作为前缀

“04F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB
x=F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A
y=07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB”
=>
03F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A
(66个16进制数)

3.2 钱包导入格式(Wallet ImportFormat)

为了区分新旧版本是否支持公钥压缩,私钥的后面附加一个字节的后缀01(表明是新版本—支持公钥压缩)

4. 比特币地址

由公钥生成的比特币地址以数字“1”开头。
eg. 1QCXRuoxWo5Bya9NxHaVBArBQYhatHJrU7

猜你喜欢

转载自blog.csdn.net/thefist11cc/article/details/114359107