请选择 进入手机版 | 继续访问电脑版
彩云比特
摘要

了解比特币和区块链非常简单,只要理解三部分: ● 第一是了解其数据结构 ● 第二个就是分布式储存和共识 ● 第三就是网络和节点。 哈希函数不管是在数据结构还是在分布式共识方面都是非常 ...

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


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


469.jpg


那么什么是哈希函数呢?


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


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


●  是无冲突
●  可以隐藏原数据
●  可以用来创建搜索谜题

无冲突


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


470.jpg


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


471.jpg


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


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


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


高阶玩家玩更溜了。


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


472.jpg


单向linked list


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

具体怎么实现呢?


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


473.jpg


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

可以隐藏原数据

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


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


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


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


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



可以用来创建搜索谜题


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


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


区块链铅笔Blockchain
作者:Bitcoin Magazine

全部评论
显示全部楼层 |
跳转到指定楼层

0

主题

29

帖子

979

积分

高级会员

Rank: 4

积分
979
发表于 2019-2-7 00:19:40 | 显示全部楼层
沙发
哈希函数
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册   

    本版积分规则

    qq客服QQ
    weixin微信公众号
    weibo官方微博
    滇ICP备14007133号-1 滇公网安备 53011102000197号   
    快速回复 返回顶部 返回列表