哈希函数--区块链的back bone

哈希函数--区块链的back bone

编辑:铅笔盒

了解比特币和区块链非常简单,只要理解三部分, 第一是了解其数据结构,第二个就是分布式储存和共识,第三就是网络和节点。

哈希函数不管是在数据结构还是在分布式共识方面都是非常重要的,


那么什么是哈希函数呢?

一般来说哈希函数是一类可以把任何数据转换成固定长度输出(也就是我们说的哈希值)的数学函数,而且可以被高效的计算, 所以我们一般会用来构建哈希表等。

在此基础上密码学哈希还多了3个特性。

是无冲突

可以隐藏原数据

可以用来创建搜索谜题


无冲突

无冲突的意思呢,是指这个哈希函数永远不会把两个不同的数转换成同样的哈希值。

哈希函数--区块链的back bone

我们以sha-256为例(sha-256也是比特币里用到的哈希函数,属于sha-2系列),它可以将数据,不管这个数据(输入)多大或者多小都可以转换成256比特,也就是32字节的一个哈希值。

哈希函数--区块链的back bone

就算这个数据(输入)只更改来一个标点符号,生成的哈希值也是完全不一样的。

但是理论上来讲,哈希值重复的情况是存在的,我们称这种情况为冲突,因为你想啊, 这个输入是无限的,你可以输入任何数据,大的小的都行。 而这个输出,哈希值它是有限的。(32位字母和数字的组合,组合的次数是有限的)但是这个数字是很大的,如果你要找到sha-256哈希值重复的这种情况,就是试2的130次方的输入,这个数字是一个天文数字,我的电脑都打不出来。 所以呢没有人能找到冲突也就是哈希值重复的情况。

在确定来哈希值的独一性后,我们就可以用哈希值来作为识别文件。在文件很大的情况下就异常的有用了。当然这个只是初级玩家的用法。

高阶玩家玩更溜了。

相信玩编程的朋友都知道一种数据结构叫linked list。

哈希函数--区块链的back bone


单向linked list

就是用指针把不同的数据块按顺序链接起来,那么现在我们确定了哈希值的独一性后,是不是可以把这个哈希值拿来当指针用呢?


具体怎么实现呢?

首先计算出第一个数据块的哈希值,然后把这个值放在第二个数据块里,再计算第二个数据块(包含了第一个数据块的哈希值)值,以此类推,你就得到了一种新的数据结构,俗称区块链。

哈希函数--区块链的back bone

当然,这只是区块链数据结构,而不是我们现在说的区块链技术(后者还包含了分布式储存和分布式共识,还有点对点网络)然后这个数据结构比起linkedlist多了一个特性,那就是防篡改。任何人想要修改这个链里数据块的消息,都会很容易被发现,因为哈希值会对不上。


可以隐藏原数据

密码哈希函数的第二个特性就是可以隐藏原数据,因为哈希函数是单向函数,你可以把数据转换成哈希值,但是不能把哈希值转换成原数据。因此,哈希函数有可以隐藏原数据的特性。

这个就非常有用了,最知名的应用就是拿来储存密码。

比如说你在某网站的密码,如果这个网站直接把你的密码存在了他们的服务器上,那是非常不安全的,但是如果是储存了你的密码对应的哈希值,你每次输入密码的时候后台自动转化成哈希值,只要哈希值对上就可以登陆了。这样安全性就提高了很多。

但是为什么还有那么多盗号,盗密码的情况发生呢?那可能是因为你的密码很常见,所以黑客只要需要输入所有常见的密码,然后用哈希值一对比,就知道了。

所以要想安全的隐藏“原数据的”的话,对输入的随机性和广泛性有要求的。 也就是为什么很多网站硬性要求密码要有符号,有大写字母,小写字母,数字等。


可以用来创建搜索谜题

第三个特性就是创建搜索谜题,就是我用哈希函数创建一系列的数学难题,然后再给出一定范围(难度随着范围大小变大变小)的可能答案,然后让你一个个的去试,(注意的是,这个是没有任何捷径的,就像我们之前将的那样,改一个标点符号哈希值就会完全不一样,而且这个哈希值的生成也是没有任何逻辑和规律可循,所以只能一个一个的试)如果运气好,找到了正确的答案,把答案和你解决的这个难题的信息一起哈希就会得到特殊的哈希值。(如以很多0开头啊,或者以很多x结束啊类似的) 。

这个运用在比特币挖矿里, 如果你找到了答案(nonce),然后和区块头里的信息一起哈希,就会得到一个以很多0开头的特殊的哈希值。

哈希函数--区块链的back bone

+1


发表评论
相关文章
南非加密货币持有比居全球第一
南非加密货币持有比居全球第一
谷歌在其IOS键盘中加入比特币符号
谷歌在其IOS键盘中加入比特币符号
FBI概述ICO骗局主要特征 提醒投资者应保持警惕
FBI概述ICO骗局主要特征 提醒投资者..
德国寻求对国家区块链战略的行业反馈
德国寻求对国家区块链战略的行业反馈
日本金融巨头SBI首席执行官称Ripple和R3为加密货币行业的希望
日本金融巨头SBI首席执行官称Rippl..
日本央行在新报告中审查中央银行数字货币
日本央行在新报告中审查中央银行数字货币

热文

合作伙伴


万向区块链实验室 趣块链社区 万向新链加速器 布比 币看 云币 Stellar 矩阵金融 网录科技 Bitse sosobtc China Ledger