1、压缩格式公钥

何为压缩,压缩就是让某一个文件占用的空间变小的。非压缩格式的公钥是一个520比特的数字,它是有04开头,后面

是256比特数字的xy坐标。如果使用压缩格式的公钥,就可以把公钥的占用的空间变小一点,这样,就可以节省那些运行的区

块链节点的空间。

如何压缩公钥?前面知道,公钥是一个点,是一个位于椭圆曲线上的点(x,y)。而椭圆曲线是一个数学方程,知道x

我们就可以通过y^2 mod p = (x^3+7) mod p求出y的值。这样的话,我们就只需要有x的值就行了,可以省去y值,这样的话,

就可以节省近一半的空间。

再就是,为何压缩格式分为02和03开头?我们知道椭圆曲线方程的左边是y^2,他的解是一个平方根,有两种情况,正值或者负值。省去了y值,但是必须知道y的正负,当我们在素p阶的有限域上使用二进制算术计算椭圆曲线的时候,y 坐标可能是奇数或者偶数,分别对应前面所讲的y值的正负符号。

所以,如果是偶数则使用02做前缀,如果是奇数则使用03做前缀

2、压缩格式私钥

从上面知道,在椭圆曲线方程中,知道x便可以求出y值,由于这样便可以省区y值,以达到压缩公钥的目的,但是如何去压缩私钥呢?不可能省去x值吧?当然不可能。所以,在这里的压缩格式的私钥是一个错误的说法,也可以说是误导式的说法。

私钥是不能被压缩的。私钥非但没有被压缩,还比"以前的私钥"长了一个字节。而这个长的私钥被加了后缀01,用来区别该私钥是一个来自新钱包的。

新钱包?什么意思。公钥格式有压缩的,没有被压缩的。同一个私钥可以生成两种格式公钥(压缩格式的和非压缩格式),两个格式的公钥经过用双哈希函数(RIPEMD160(SHA256(K)))后,得到两个不同的地址,而这两个不同的比特币地址都是合法的且来自同一个私钥。

两种地址都能使用,但是并不是所有的客户端都支持压缩格式的。而支持压缩格式的钱包就称为新钱包

新钱包使用那个地址?无论是压缩格式的地址或者非压缩格式的地址,都是合法的比特币地址,都可以被私钥签名。为解决这个问题,新钱包会对两种格式的公钥进行不同的处理方式,而这个时候的所谓的"压缩格式私钥"在后加上01后缀比那是用来区别这个私钥是来自新钱包,回生成压缩格式的公钥。

“压缩格式私钥”是一个不当用词!私钥不是压缩的。WIF压缩格式的私钥只是用来表明他们只能被生成压缩的公钥和对应的比特币地址。相反地, “WIF 压缩” 编码的私钥还多出一个字节,因为这种私钥多了后缀“01”。该后缀是用来区分“非压缩格式”私钥和“压缩格式”私钥。

相同的密钥,不同的格式 

十六进制压缩私钥格式(hex-compressed)在末尾加了一个字节(十六进制为01)。 虽然 Base58 编码版本前缀对于 WIF和WIF压缩格式都是相同的(0x80),但在数字末尾添加一个字节会导致Base58编码的第一个字符从5变为K或L。

这些格式并不是可互换使用的。在实现了压缩格式公钥的较新的钱包中,私钥只能且永远被导出为WIF压缩格式(以K或L 为前缀)。对于较老的没有实现压缩格式公钥的钱包,私钥将只能被导出为WIF格式 (以5为前缀)导出。这样做的目的就是为了给导入这些私钥的钱包一个信号: 是否钱包必须搜索区块链寻找压缩或非压缩公钥和地址。

如果一个比特币钱包实现了压缩格式公钥,那么它将会在所有交易中使用该压格式缩公钥。钱包中的私钥将会被用来在曲线上生成公钥点,这个公钥点将会被压缩。压缩格式公钥然后被用来生成交易中使用的比特币地址。

当从一个实现了压缩格式公钥的新的比特币钱包导出私钥时,钱包导入格式(WIF)将会被修改为WIF压缩格式,该格式将会在私钥的后面附加一个字节大小的后缀01。最终的Base58Check编码格式的私钥被称作 WIF(“压缩”)私钥,以字母“K”或“L”开头。 而以“5”开头的是从较老的钱包中 以 WIF(非压缩)格式导出的私钥。

区块链-压缩格式的密钥相关推荐

  1. 回归主流:区块链新大门的“密钥”

    当比特币价格不断攀升,越来越多的人开始旧调重弹,将其与区块链联系在一起,试图用比特币市场的火爆来掩盖他们在区块链探索上的苍白与无力.尽管这种方式的确可以缓解区块链落地和应用上的短缺,但是,仅仅只是一味 ...

  2. 基于区块链的去中心化抗量子密钥管理系统

    摘要: 区块链技术在2008年被提出被称为比特币(我觉得应该是翻译为比特币应用了区块链技术),区块链技术是一种分布式的数据库.公钥基础设施PKI(Public Key Infrastructure)系 ...

  3. 量子计算与区块链抗量子算法

    以下为论文译文: 区块链后量子(PQ)签名 作者: Konstantinos Chalkias∗ , James Brown† , Mike Hearn‡, Tommy Lillehagen§,Igo ...

  4. 关于区块链自我主权身份(SSI)的三个主要问题

    当今的许多网站都要求用户创建一个帐户或使用来自Google或Facebook等身份提供商(IDP)的现有帐户进行身份验证.这导致了三个主要问题,毛球科技整理如下: 首先,该帐户仅存储在网站的后端,因此 ...

  5. 区块链结合物联网可研究方向

    文献来源 H. Dai, Z. Zheng and Y. Zhang, "Blockchain for Internet of Things: A Survey," in IEEE ...

  6. 区块链笔记:区块链概念、相关对比、技术特点、CAP定理、FLP定理、价值网络

    什么是区块链 对于区块链这个技术名词出现在很多文章里面,有很多解释.站在技术角度来说,它是指一种数据的记录格式,任何系统都要记录数据,区块链对于其他的数据库或者工具有什么不一样的地方呢? 记录数据的方 ...

  7. 量子计算是否会终结区块链?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 有专家认为量子计算可能会淘汰区块链.Google 和 IBM 等科技巨头都对量子计算表现出了 ...

  8. 区块链安全————区块链技术安全讨论

    0x00 背景介绍 区块链技术是金融科技(Fintech)领域的一项重要技术创新. 作为分布式记账(Distributed Ledger Technology,DLT)平台的核心技术,区块链被认为在金 ...

  9. 区块链(一)基于区块链的网络安全技术

    一.浅层对区块链的认识 1.基于区块链的网络安全机制具有去中心化.不可篡改.可追溯.高可信和高可用的特性,有利于提升网络安全性. 2.网络安全可以采用区块链(blockchain)技术,建立一个去中心 ...

最新文章

  1. s域到c语言离散化方法,离散化方法研究.docx
  2. 系统调用日志收集系统
  3. 7.21.05 中断流程控制语句
  4. 文件管理详细知识要点
  5. ACdream OJ 1140 Counting Triangles
  6. P3385 【模板】负环
  7. android n模拟器,BlueStacks推出Android N模拟器
  8. 心跳超时时间设置_定时器实现之时间轮算法
  9. java nio 文件传输
  10. 无数老板做企业还在卖产品赚差价
  11. iptables NAT
  12. 微软语音合成助手 v1.5.1 文本转语音工具,真实语音AI生成器
  13. Python爬虫---汽车之家字体反爬
  14. ITRF框架转换程序实现的理论
  15. CentOS8使用network.service服务管理网络
  16. C:\ProgramData\Microsoft\VisualStudio创建软连接,腾出C盘空间
  17. 张飞流水帐(完整版)
  18. elementui中 el-table表格表头以及内容渲染(横向纵向渲染)以及固定列fixed定位位置错乱表格偏移问题
  19. 38掌握分布式存储系统 GlusterFS 的基本用法,包括卷管理、数据复制
  20. org.apache.commons.codec.binary.Base64包需要下载的jar包依赖

热门文章

  1. 如何掌握电烙铁焊接技术
  2. 实现一个Android输入法
  3. python爬股票信息_爬取股票信息(股票代码+价格)
  4. VC编程实现 excel插入一行单元格Insert
  5. 从零开始实现美团联盟分销——先封装一个简洁易用的SDK
  6. python 弱引用
  7. 如何开好项目启动大会
  8. 5.node.js中的事件循环
  9. 选择排序之简单选择排序
  10. GATK教程 / 体细胞短变异检测 (SNV+InDel)流程概览