大家都知道,区块链的关键技术组成主要为:P2P网络协议、共识机制、密码学技术、账户与存储模型。而这些技术中,又以 密码学与共识机制 这两点为最核心。那么今天我们来详细的聊一聊密码学,看一看密码学技术是如何在区块链中应用的。

首先,我们需知道区块链中用到的密码学算法有哪些?其实就两大类:

  • 哈希算法
  • 非对称加密算法

一、区块链中的哈希算法

哈希算法是区块链中用的最多的一种算法,它被广泛的使用在构建区块和确认交易的完整性上。

它是一类数学函数算法,又被称为散列算法,需具备三个基本特性:

  1. 其输入可为任意大小的字符串
  2. 它产生固定大小的输出
  3. 它能进行有效计算,也就是能在合理的时间内就能算出输出值

如果要求哈希算法达到密码学安全的话,我们还要求它具备以下三个附加特性:

  1. 碰撞阻力: 
    是指对于两个不同的输入,必须产生两个不同的输出。如果对于两个不同的输入产生了相同的输出,那么就说明不具备碰撞阻力,或是弱碰撞阻力。
  2. 隐秘性: 
    也被称为不可逆性,是指 y = HASH(x)中,通过输入值x,可以计算出输出值y,但是无法通过y值去反推计算出x值。为了保证不可逆,就得让x的取值来自一个非常广泛的集合,使之很难通过计算反推出x值。
  3. 谜题友好: 
    这个特性可以理解为,谜题是公平友好的,例如算法中 y = HASH(x),如果已知y值,想去得到x值,那就必须暴力枚举,不断的尝试才能做到,并且没有比这更好的办法,没有捷径。

哈希算法有很多,比特币主要使用的哈希算法是 SHA-256 算法。

除此之外,还有其他一些哈希算法也很流行,例如 MD5、SHA-1、SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)、SHA-3 等,其中 MD5、SHA-1 已被证明了不具备 强碰撞阻力,安全性不够高,因此市场上不再推荐使用。

我们以比特币为例,来看一下哈希算法的具体应用: 
在比特币中,使用哈希算法把交易生成数据摘要,当前区块里面包含上一个区块的哈希值,后面一个区块又包含当前区块的哈希值,就这样一个接一个的连接起来,形成一个哈希指针链表,如下图:

上面只是示意图,那么在实际比特币系统中,每个区块包含哪些内容呢:

重点关注一下上图中的:

  • Prev Block:记录签一个区块的hash地址,32字节
  • Merkle Root:是一个记录当前块内的所有交易信息的数据摘要hash值,32字节
  • Nonce:一个随机值,需要通过这个随机值去找到满足某个条件的hash值(挖矿),4字节

上面只是解释了几个重点的字段,其它字段通过字面应该容易理解就不一一解释了。 
这所有的字段一起就组成了 block header(区块头),然后需要对 block header 进行2次hash计算,计算完成的值就是当前比特币区块的hash值。因为比特币系统要求计算出来的这个hash值满足一定的条件(小于某个数值),因此需要我们不断的遍历Nonce值去计算新的hash值以满足要求,只有找到了满足要求的hash值,那么这就是一个合法区块了(这一系列动作也叫作挖矿)

示例:
SHA-256(SHA-256 (Block Header)

我们再看一下上面的另一个重要字段: Merkle tree 字段。 
Merkle tree 被称为 默克尔树,它也是哈希算法的一个重要应用。 
它其实是一个用哈希指针建立的二叉树或多叉树。

Merkle tree 如图:

其树的顶端叫做 默克尔根(Merkle Root),Merkle Root 也是一个hash值,它是怎么计算出来的呢?

比特币中对每一笔交易做一个hash计算,然后把每2个交易的hash再进行合并做hash,如图中的 交易A的hash值是 H(A),交易B的hash值是H(B),再对这2个交易合并hash后就是H(hA|hb),就这样一直往上合并计算,算到最后的根部就是 Merkle Root 了。

在比特币和以太坊中都是使用的默克尔树结构,但是以太坊为了实现更多复杂的功能,所以有三个默克尔树。

至此,区块链中的哈希算法应用就介绍完了,接下来我们看一下非对称加密算法。

二、区块链中的非对称加密算法

区块链中有一个很关键的点就是账户问题,但比特币中是没有账户概念的,那大家是怎么进行转账交易的呢?

这里就得先介绍区块链中的非对称加密技术了。

非对称加密技术有很多种,如:RSA、ECC、ECDSA 等,比特币中是使用的 ECDSA 算法。 
ECDSA 是美国政府的标准,是利用了椭圆曲线的升级版,这个算法经过了数年的细致密码分析,被广泛认为是安全可靠的。

所谓非对称加密是指我们在对数据进行加密和解密的时候,需使用2个不同的密钥。比如,我们可以用A密钥将数据进行加密,然后用B密钥来解密,相反,也可以用B来加密,然后使用A来解密。那么如果我想给某个人传递信息,那我可以先用A加密后,将密文传给她,她拿到密文之后,用手上的B密钥去解开。这2个密钥,一个被成为公钥、一个是私钥。

在比特币中,每个用户都有一对密钥(公钥和私钥),比特币系统中是使用用户的公钥作为交易账户的。 
我们先看下图:

在图中可以看到,在第一笔交易记录中,是 用户U0 来发起的交易,要将代币支付给 用户U1,是怎么实现的呢?

  1. 首先 用户U0 写好交易信息:data(明文,例如:用户U0转账100元给用户U1)
  2. 用户U0 使用哈希算法将交易信息进行计算,得出 H = hash(data),然后再使用自己的私钥对 H 进行签名,即 S(H),这一步其实是为了防止交易信息被篡改用的
  3. 然后基于区块链网络,将 签名S(H) 和 交易信息data 传递给 用户U1
  4. 用户U1 使用 用户U0 的公钥 来对 S(H) 解密,就得到了交易信息的哈希值 H
  5. 同时,用户U1 还使用哈希算法对 交易信息data 进行计算,得出 H2 = hash(data)
  6. 对比上面2个哈希值,如果 H1==H2,则交易合法。说明 用户U0 在发起交易的时候确实拥有真实的私钥,有权发起自己账户的交易
  7. 网络中每一个节点都可以参与上述的验证步骤。

这个示例,就是比特币中一次交易的签名流程,即将 哈希算法与非对称算法结合在一起用于了比特币交易的数字签名。 
除此之外,比特币中,公私钥的生成、比特币地址的生成也是由非对称加密算法来保证的。

以上,就是区块链体系中,核心技术之哈希算法与加密算法的应用情况,欢迎一起交流。

本文原创发布于微信公众号「 不止思考 」,欢迎关注,交流 互联网认知、工作管理、大数据、Web、区块链技术。

转载于:https://www.cnblogs.com/jsjwk/p/9476175.html

揭秘区块链的核心技术之「哈希与加密算法 」相关推荐

  1. 大数据揭秘区块链人才大迁徙:那个你身边悄悄离职的人去哪儿了?

    最早被搅动的是VC.从徐小平"不要外传"的"拥抱区块链革命"言论刷爆朋友圈,到红杉.IDG.丹华等顶尖投资机构频频出现在白皮书中,大批VC开始主动或被动地拥抱区 ...

  2. 区块链金融理论测试题-----「大数据、区块链时代」

    1.Hyperledger是Linux基金会发起的_______. 正确答案:C • A.公有链 • B.私有链 • C.联盟链 • D.中心化系统 答案解析:Hyperledger是联盟链 2.区块 ...

  3. 济南区块链产业核心技术研究取得重大突破,区块链产业链条基本健全

    据济南市人民政府官网,日前,济南市人民政府办公厅正式印发<济南市区块链产业创新发展行动计划>(以下简称"<行动计划>"). <行动计划>提到,到 ...

  4. 区块链 - 区块链基础知识:交易哈希链

    区块链 - 区块链基础知识:深入了解交易哈希链 本文的主题是执行有关交易哈希链. 交易池的角色以及 一个最长的区块链如何永远占据主导. 讨论的细节包括以下内容: 事务哈希链的实现细节 交易池的角色 为 ...

  5. Comunion 区块链深度学习系列|哈希碰撞原理

    Comunion 是一个去中心化的(DAO) 组织协作网络,提供面向数字时代的全新商业基础设施和价值转化机制,致力于让劳动价值 像 资本一样自由流通.交易和积累. 本系列内容包含:基本概念及原理.密码 ...

  6. 区块链原理+核心技术

    文章目录 注:本文参考学习中国计算机学报2021第1期中的论文<区块链原理及核心技术>(蔡晓晴.邓尧.张亮.史久琛.陈全.郑文立.刘志强.龙宇.王堃.李超.过敏意著) 前言 每一秒,微信就 ...

  7. 当区块链与数字货币开始分野 区块链需要构建一个「生态」

    当区块链与数字货币开始分野,我们看到的是,越来越多的行业开始与区块链产生联系,越来越多的场景当中开始出现区块链的身影.区块链,俨然成为一个无处不在的存在.尽管区块链的应用遍地开花,但是,我们还应该看到 ...

  8. 什么是区块链?区块链的核心技术包括哪些?

    简介:区块链作为一种分布式记账技术,目前已经被应用到了资产管理.物联网.医疗管理.政务监管等多个领域.从网络层面来讲,区块链是一个对等网络(Peer to Peer,P2P),网络中的节点地位对等,每 ...

  9. 把区块链作为核心技术自主创新重要突破口:华为云可以做什么?【华为云分享】

    在近日上海举行的2019 QCon全球软件开发大会上,华为云区块链高级产品经理王磊在华为云技术专场<技术裂变中的可信软件开发>中发表演讲,分享了区块链在当前社会应用的社会价值,介绍了华为云 ...

最新文章

  1. 合肥工业大学—SQL Server数据库实验十:用户及其权限管理
  2. 图片的宽铺满全屏 微信小程序_2020冬至快乐图片!,图片祝福贺卡,朋友圈冬至早安问候语动态图片微信小程序...
  3. 语音识别——基于深度学习的中文语音识别tutorial(代码实践)
  4. 环保—北京周边 自行车骑行线路大全
  5. NCTF2019 -- PWN部分writeup
  6. python爬虫有几种方法_基于Python爬虫的几种方法,python
  7. 阿里云混合云Apsara Stack 2.0发布,加速政企数智创新
  8. 恢复 outlook express中的附件按钮
  9. 萌新向Python数据分析及数据挖掘 第三章 机器学习常用算法 第四节 PCA与梯度上升 (上)理解篇...
  10. 硬解析和软解析 mysql_Oracle学习之shared pool--硬解析和软解析
  11. 应用程序框架实战二十二 : DDD分层架构之仓储(层超类型基础篇)
  12. 祖国60岁生日,我在北京度过。
  13. DRL前沿之:Benchmarking Deep Reinforcement Learning for Continuous Control
  14. 使用webclient上传下载实例
  15. 知道css有个content属性吗?有什么作用?有什么应用?可以伪类清除浮动
  16. 华为手机天气小工具误删/移除/丢失/不见了怎么办?
  17. A公司物流配送安全风险管理现状
  18. java计算机毕业设计民航售票管理系统源代码+数据库+系统+lw文档
  19. Ant Design Icon图标使用
  20. 公钥秘钥及加签验签那些事儿

热门文章

  1. 【Excel VBA】身份证号校验功能函数
  2. php语言开发的cms,YzmCMS
  3. bs结构socket(udp)通信
  4. 美国或下周封杀委内瑞拉石油币,法国AMF:不禁止无证ICO,有证ICO须特定担保 | 区块链日报
  5. ssh框架的信阳市南湾湖旅游网站的设计与开发源码+论文第三稿+ppt+代码讲解视频+安装视频+中期检查表(包安装部署,已降重
  6. 使用rabbitmq实现短信验证码的的发送
  7. 如何使用sci.hub下载文献
  8. 用python绘制五角星
  9. 微服务架构从入门到精通(一)微服务介绍
  10. 24核超级计算机,从CPU内部详解电脑CPU的性能:24核CPU什么样?