区块链密码学之Hash散列算法

密码学是区块链系统的基础,如果没有密码学技术支撑,区块链就仅仅是一个普通的分布式日志系统。密码学在区块链上应用比较多的主要有两种加密算法: 一是哈希散列算法,二是非对称加密算法。


attachments-2018-03-9MDlTgOS5aa74ab46b850.png

作者:andy_tocm

来源:CSDN

原文链接:http://t.cn/E21eeSW

本文约1800字+,阅读(观看)需要15分钟

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


密码学是区块链系统的基础,如果没有密码学技术支撑,区块链就仅仅是一个普通的分布式日志系统。密码学在区块链上应用比较多的主要有两种加密算法: 一是哈希散列算法,二是非对称加密算法。比如在前面的第三章节中关于PoW 共识机制的实现原理也提到过,PoW 也是通过哈希散列算法去解决工作量证明难题。

什么是Hash(散列算法)


Hash,音译“哈希”,一般翻译做“散列”,就是把任意长度的数据作为输入,然后通过Hash散列算法得到一个固定长度的输出值,该输出值就是散列值,它是一种数据压缩映射关系。 简单来说就是将做任意长度的消息压缩到某一固定长度的消息摘要的函数。

例如:

6f5d04c97da44e24b53a8a008b6eb0f1


简单理解代码示例:

8b8fff0da1be430e8d52c131eefc6d50


Hash散列算法特征


正向快速:给定明文和hash算法,在有限时间和有限资源内计算Hash值。

不可逆性:给定任意的Hash值,在有限时间内很难逆推出明文。

输入敏感:如果输入的数据信息被轻微修改,输出的Hash值也会有很明显的变化。

抗碰撞性:任意输入不同的数据,其输出的Hash值不可能相同,如果给定一个数据块去找出其具有相同的Hash值,那是几乎不可能。

Hash散列算法实现原理


算法实现可以有:加运算,位运算,乘运算,等。。。

它的最大特征就是:将做任意长度的消息压缩到某一固定长度的值。

典型散列算法函数


0de235a46e034ec3b76dd64af65a6d70



如何解决概率散列值生成0-15冲突

采用方法:Map链表


65c472f050b14e77ab03fee95d68556c



  1. 创建一个长度为16的数组,用于存放散列函数运算生成的0到15范围的固定散列值。


  1. //创建长度为16数组,用于存放散列运算生成的 0〜15 范围的固定散列值
  2. const ARRAY_LEN int = 16
  3. var buckets = make([]*LNode, ARRAY_LEN)


2. 创建一个链表结构,并实现链表增,删,改,查等方法。

  1. /**
  2. 存放数据元素结构
  3.  */
  4. type KValue struct {
  5. Key string
  6. Value string
  7. }
  8. /**
  9. 节点结构
  10. */
  11. type LNode struct {
  12. Data KValue
  13. NextNode *LNode;
  14. }


3. 初始化数组,每个数组元素默认创建一个链表头,通过链表来存放数据来解决散列运算中生成的0~15范围的冲突问题,比如输出两个者是5的散列值时,这时候就把这两个的数据存放到对应数组元素为5的链表结构上。 

1794852a760f4f279606c3c5eaaf51ca


4. 添加新数据。


3f83e42d0d57461698fe2e209e30b381


Hash算法区块链上应用


应用于区块的生成、验证及交易的完整性

从区块链的架构可以看出区块链其实就是一个特定数据库结构,由若干个有序的区块通过相互间的哈希(Hash)值连接在一起的链表结构。它也是一个典型的哈希指针链表,每一个区块的 prev_block_hash 都指向上一个区块的哈希,每个区块信息都可通过任意一个区块哈希去查找,具有可塑性。如图为区块链结构。


faf87e72e9f24b688e6edb505294b195


   

PoW共识机制的实现,通过计算一个区块的目标Hash散列值进行大量的穷举运算。具体原理实现请翻读之前发表的文章。

区块中Merkle树生成根结点的实现,通过对叶子节点从底层开始往上两两做SHA256 Hash,直到得出最顶部的节点Hash值作为本区块树的交易Hash,并将它存放在区块链上。


bd14daca1ede4c3a9bb94bd810a3ed08



钱包地址的生成,对公钥进行两次SHA256 Hash。

结语


本篇主要讲了密码学的其中一种加密算法-Hash散列算法,文章主要讲了Hash散列算法的概念、特征、以及它的运行原理,另外也讲了Hash算法在区块链上的一些应用。密码学在区块链系统中起着举足轻重的作用,没有密码学技术的加入,那区块链系统就变成是一个很普通的分布式日志系统。


文章发布只为分享区块链技术内容,版权归原作者所有,观点仅代表作者本人,绝不代表区块链兄弟赞同其观点或证实其描述。

attachments-2018-02-kL1zBfXx5a7ffd0b78798.jpg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
社区运营-小以

558 篇文章

作家榜 »

  1. 社区运营-小以 558 文章
  2. 社区运营-小链 244 文章
  3. 于中阳Mercina-zy 79 文章
  4. 涂晶 75 文章
  5. 李晓琼 44 文章
  6. 兄弟连区块链培训 42 文章
  7. 吴寿鹤 36 文章
  8. John-smith 25 文章