bitcoin:压缩公钥与非压缩公钥 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shooter
V2EX    区块链

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

  •  
  •   shooter 2019-03-21 12:42:20 +08:00 1740 次点击
    这是一个创建于 2465 天前的主题,其中的信息可能已经有所发展或是发生改变。

    btc address: 1FmWXNJT3jVKaHBQs2gAs6PLGVWx1zPPHf eth address: 0xd91c747b4a76B8013Aa336Cbc52FD95a7a9BD3D9

    前文介绍

    生成 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 
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2647 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 20ms UTC 14:14 PVG 22:14 LAX 06:14 JFK 09:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86