Py学习  »  区块链

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

区块链铅笔Blockchain • 5 年前 • 399 次点击  
点击上方
“蓝色字”
可关注我们!







作者:Bitcoin Magazine

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

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

那么什么是哈希函数呢?

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

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

是无冲突

可以隐藏原数据

可以用来创建搜索谜题


无冲突

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

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

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

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

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

高阶玩家玩更溜了。

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


单向linked list

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


具体怎么实现呢?

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

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


可以隐藏原数据

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

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

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

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

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


可以用来创建搜索谜题

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

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

本文仅代表作者个人观点,不代表区块链铅笔的立场,不构成投资建议,内容仅供参考。

3分钟了解什么是区块链?(中文动画)|(英文动画教程

3分钟了解什么是DAO?(中文动画)|(英文动画教程)

3分钟看懂以太坊和智能合约?(中文动画)| (英语动画教程)

3分钟了解比特币挖矿和区块链共识机制?(中文动画)|(英文动画教程)

3分钟了解公有链和私有链(中文动画教程)|(英文动画教程)

3分钟了解区块链的六层模型(中文动画教程)|(英文动画教程)

什么是区块链英文版(动画教程)

肖风:区块链与另类资产配置

逐鹿区块链!详解三大巨头BAT区块链战略布局

麦肯锡报告:区块链对保险行业的影响

八张图表解读区块链的未来发展

震惊全球的The DAO黑客事件全程回顾

Circle获得包括IDG、百度、万向在内6000万美元融资


关注本公众号后,进入公众号

回复关键词可以查阅资料,以下是部分关键词


回复 WEF ,查看《WEF:世界经济论坛认为区块链是互联网金融行业的未来报告》

回复 智能合约 ,查看《巴克莱银行报告》

回复 moody ,查看《穆迪120个区块链项目报告》

回复 SWIFT ,查看SWIFT《区块链对证券交易全流程产生的影响及潜力》报告

回复 论文11 ,查看论文《可扩展的去中心区块链》

回复 埃森哲2 ,查看埃森哲《区块链每年可以为投资银行节省120亿美元》报告

回复 联合国报告 ,查看联合国报告《数字货币和区块链技术在构建社会和可信金融之间扮演的角色》

回复 用户特性 ,查看普林斯顿大学首本比特币教科书初稿《比特币用户的特性(Characteristics of Bitcoin Users)》

回复 普林斯顿 ,查看普林斯顿大学首本比特币教科书初稿《比特币和数字货币技术(Bitcoin and Cryptocurrency Technologies)》

回复 IMF,查看国际货币基金组织报告《Virtual Currencies and Beyond: Initial Considerations》

回复 DTCC ,查看美国存管信托清算公司报告《DTCC: 拥抱分布式》

回复 广发 ,查看报告《科技前沿报告:区块链:正快速走进公众和政策视野》

回复 川财1 ,查看报告《川财证券:区块链技术调研报告之一:具有颠覆所有行业的可能性》

回复 川财2 ,查看报告《川财证券:区块链技术调研报告之二:区块链技术进化论-区块链技术的国内实践和展望》

回复 桑坦德 ,查看桑坦德银行报告《The Fintech 2.0 Paper: rebooting financial services》

回复 拜占庭 ,查看《拜占庭将军问题详解》

回复 论文1 ,查看论文《比特币闪电网络:可扩展的离线即时支付》

回复 论文2 ,查看论文《比特币骨干协议》

回复 论文3 ,查看论文《数字货币是否应该进入Barbados央行国际储备货币组合中》

回复 帮助 ,查看本公众号全部关键词列表

点击下方“阅读原文”查看更多页面出现后再点击“来源”可以查看译文原文链接 
↓↓↓



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/EwWxHxu5Fx
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/28562
 
399 次点击