进阶级科普 | 区块链与哈希函数

什么是哈希?什么是哈希函数?哈希函数如何与区块链扯上关系?本文中将一一解答。

进阶级科普 | 区块链与哈希函数

12月7日由中国科学院学部主办,中国信息通信技术研究院支持的“区块链技术与应用”科学与技术前沿论坛在深圳开幕。

中国科学院信息技术科学部郑志明院士,和数学物理系院士王小云等四位院士发表了主题演讲,同时还有来自政府和企业界的300多名代表参加了会议,讨论了区块链和数字身份,监管技术和金融应用等话题展开讨论。

在论坛上,王小云院士从密码学的角度介绍了区块链技术,阐述了密码学的重要性和密码学的发展现状。她说,区块链技术并不神秘。哈希函数、数字签名算法和加密算法是区块链的三大基本技术,其中哈希函数起源性技术。

那么我们就来聊聊什么是哈希函数。

哈希和哈希函数

Hash(哈希),又称“散列”。散列(hash)英文原意是“混杂”、“拼凑”、“重新表述”的意思。在某种程度上,散列是与排序相反的一种操作,排序是将集合中的元素按照某种方式比如字典顺序排列在一起,而散列通过计算哈希值,打破元素之间原有的关系,使集合中的元素按照散列函数的分类进行排列。

哈希函数(Hash Function)就是一种特殊的数字方程式,也称散列算法;可将任意长度的二进制值映射为较短且固定长度的随机字符串(哈希值)。具体来说,无论输入的是单一字母、单词、句子、整本书籍等等,经过哈希函数运算,输出值的长度都是一样的。它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。 

哈希函数的特点

另外哈希函数一般还要求以下两种特点:

1、唯一性:即不会出现输入 x≠y ,但是H(x)=H(y) 的情况,其实这个特点在理论上并不成立,比如目前比特币使用的 SHA256 算法,会有 2^256 种输出,如果我们进行 2^256 + 1 次输入,那么必然会产生一次碰撞,事实上,通过理论证明 ,通过 2^130 次输入就会有99%的可能性发生一次碰撞,不过即使如此,即便是人类制造的所有计算机自宇宙诞生开始一直运算到今天,发生一次碰撞的几率也是极其微小的。所以,输入的明文与输出的散列数据一一对应,任何一个输入信息的变化,都必将导致最终输出的散列数据的变化。

2、不可逆:也就是说,对于一个给定的输出结果 H(x) ,想要逆推出输入 x ,在计算上是不可能的。如果想要得到 H(x) 的可能的原输入,不存在比穷举更好的方法。加密过程不可逆,意味着我们无法通过输出的散列数据倒推原本的明文是什么。

哈希函数和区块链的关系

1953 年哈希函数出现,1970 年哈希函数蓬勃发展,2001 年 SHA-256 出现,在 2008 年时,哈希函数却在中本聪手里被玩出了花,成为了区块链技术里不可撼动的基石。

区块与 Hash 是一一对应的,每个区块的 Hash 都是针对“区块头”(Head)计算的。Hash = SHA256(区块头)

区块头包含很多内容(包括上一个区块的Hash、当前区块体的Hash等)。这意味着,如果当前区块的内容变了,或者上一个区块的 Hash 变了,一定会引起当前区块的 Hash 改变。

如果有人修改了一个区块,该区块的 Hash 就变了。为了让后面的区块还能连到它,必须同时修改后面所有的区块,否则被改掉的区块就脱离区块链了。Hash 的计算很耗时,同时修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。

正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。

参考:http://www.sohu.com/a/308610737_465944

本文来自投稿,不代表DAppChaser立场,如若转载,请注明出处:https://www.dappchaser.com/hash-blockchain/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

邮件:contact@dappchaser.com

QR code