美文网首页漫谈区块链
bitcoin:压缩公钥与非压缩公钥

bitcoin:压缩公钥与非压缩公钥

作者: 已不再更新_转移到qiita | 来源:发表于2019-01-08 15:41 被阅读110次

前文介绍

生成bitcoin地址 文章中得到了公钥 04d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f691757b28e31be71f09f24673eed52348e58d53bcfd26f4d96ec6bf1489eab429d
公钥其实是secp256k1椭圆曲线的一个坐标点,即(x,y)形式,用16进制表示是
(0xd061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69,
0x1757b28e31be71f09f24673eed52348e58d53bcfd26f4d96ec6bf1489eab429d)

而且(x,y) 必然符合:

# python code
Pcurve = 2**256 - 2**32 - 2**9 - 2**8 - 2**7 - 2**6 - 2**4 -1 #有限域
x = 0xd061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69
y = 0x1757b28e31be71f09f24673eed52348e58d53bcfd26f4d96ec6bf1489eab429d

x_res = x**3+7
y_res = y**2

(x_res%Pcurve) == (y_res%Pcurve)

为啥符合呢

比特币secp256k1椭圆曲线公式是 y^2=x^3+7
椭圆曲线加密算法 定义在有限域 \mathbb{F}_p
假设 y^2=x^3+7\mathbb{F}_{23}

x^3+7 \ mod \ 23 就是 ((x**3)+7) % 23

y^2 \ mod \ 23 就是 (y**2)%23

((x**3)+7) % 23 == (y**2)%23必然成立,不成立就不符合椭圆曲线加密的定义了。

secp256k1的有限域是Pcurve,Pcurve是个质数。

未压缩公钥

前缀04+x坐标+y坐标
04d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f691757b28e31be71f09f24673eed52348e58d53bcfd26f4d96ec6bf1489eab429d

压缩公钥

前缀03+x(如果y是奇数),前缀02+x(如果y是偶数)

0x1757......429d从最后一位 0xd来看,这个数是奇数,所以压缩公钥是03d061e9c5891f579fd548cfd22ff29f5c642714cc7e7a9215f0071ef5a5723f69

现在一般都使用压缩公钥, 压缩/未压缩公钥生成的地址确实会不一样,
非压缩公钥早已成了非主流。

比特币地址

以下是同一个私钥,不同类型的公钥生成的地址。
代码见 gen_addr

14xfJr1DArtYR156XBs28FoYk6sQqirT2s
35egEPVeimCvWAmXeHXcYtAUtdA8RtsNUY
mjUcbu6BytKoC7YiEkqPxB1sc6U7nnjFse
#############压缩公钥#############
1ASfqPzBTfPSBA9DWdHYYNk4qM5NoGNtzL
3B8gkwUd1ZhpGKqedix8y16zysN6QWqQxS
mpxd8T5AGgpgxGcqECFvNHxPhLg5of8Sh3

相关文章

  • bitcoin:压缩公钥与非压缩公钥

    前文介绍 生成bitcoin地址 文章中得到了公钥 04d061e9c5891f579fd548cfd22ff29...

  • 1.1 公钥格式

    公钥的格式● 公钥也可以用多种不同格式来表示,最重要的是它们分为非压缩格式或压缩格式公钥这两种形式。● 前缀04是...

  • ECC/SM2 公钥(点)压缩与还原

    ECC/SM2 公钥(点)压缩方法,64字节公钥压缩成33字节公钥。 一、C 二、Java Java基于bcpro...

  • 以太坊解析-(1) 公钥私钥地址字符串公钥推导

    以太坊中私钥和HASH都为32位,公钥为65位其中第一位是压缩字节0x04,压缩公钥为33字节,地址是是公钥的后6...

  • Address三

    引入压缩格式公钥是为了减少比特币交易的字节数,从而可以节省那些运行区块链数据库的节点磁盘空间。压缩格式公钥渐渐成为...

  • 漫说数字签名digital signature(转载)

    前提:公钥和私钥是成对的,它们互相解密。加密数据:公钥加密,私钥解密数字签名:私钥加密,公钥解密 一、漫说公钥与私...

  • [Knowledge]_[apk signature签名]

    signature significance签名的意义[2] 防篡改 公钥与私钥[1] 公钥加密使用公钥加密原始数...

  • Google Cloud SSH 连接配置

    设置当前用户及root用户的密码 在本地生成私钥和公钥 复制公钥及导入公钥 复制公钥 导入公钥 添加密码验证登陆 ...

  • https+ ca证书

    非对称加密 1.公钥加密,私钥可以解密;2.私钥加密,公钥可以解密;3.公钥解密,公钥不可以解密; 伪造公钥 用户...

  • WIF私钥

    公钥一般来说是椭圆曲线上的x,y坐标拼接在一起的。压缩的公钥其实就是x的坐标,因为有了椭圆曲线还有x,顺理成章就可...

网友评论

    本文标题:bitcoin:压缩公钥与非压缩公钥

    本文链接:https://www.haomeiwen.com/subject/iwtbrqtx.html