美文网首页
比特币的密码学基础:哈希

比特币的密码学基础:哈希

作者: 链圈社区 | 来源:发表于2018-08-21 11:27 被阅读0次

昨天我们讲了比特币的网络基础,即比特币的组网是P2P结构的,但我们并没有深入地讲P2P是如何实现的,因为P2P已经是一个很成熟的技术,比特币之于P2P,就像一个苹果放在桌子上,我们要研究这个苹果,无需搞懂这个桌子是怎么做出来的。当然,有兴趣的同学可以专门去了解P2P技术。

    接下来这两篇,我们聊聊比特币的密码学基础。提到密码学,大家肯定觉得特别高大上,头大。放心,不死姐在介绍区块链的时候,会跟昨天讲网络结构一样,把握一个原则——最小知识集原则,即只选择那些为了弄懂区块链而不得不学的知识。所以,这两篇我们不会系统介绍密码学,只学习两个不得不学的密码学概念。然后,这两篇之后,我们就开始正式学习区块链的基本原理。

  废话不多说了,这一篇的目的就是让大家搞懂一个概念:哈希。

        哈希这个词,想必大家都见过,而且也感觉似懂非懂。它还有另外一个名字,叫“散列”,哈希其实是“hash”的音译。所以,以后大家见到哈希和散列这两个词,就知道说的是同一个家伙。另外在区块链里,我们经常聊算力,算力的单位是H/s,这个H其实就是哈希,10H/s就是1秒能做10次哈希。当然H/s前面经常还会加K、M、G这些字母。这些字母其实是表数量级的,像我们平常表示带宽一样,KH/s就是1千哈希每秒,MH/s就是百万哈希每秒等等。相信看完本文,学习完哈希之后,你会非常清楚地知道算力到底是个什么鬼。

我们知道,计算机和互联网不管多么神通广大,但它们其实只认识0和1两个数字,不管是多么长多么复杂的文字、图片、视频,在计算机里存储的,在互联网上传输的,永远都是一串由0和1组成的数据。不同长度、不同组合的0和1可以表达世界上任何信息,就像26个英文字母可以组合出可表达任何意思的单词一样。现在我建一个txt文件,在里面写上“I love you”,然后保存。但其实计算机里存储的是这么一大串:010010010010000001101100011011110111011000100000011110010110111101110101

好,我们现在知道了任何信息都可以翻译成一串0和1。那哈希是什么呢?其实,哈希就是一种运算,就像加减乘除一样,只不过哈希的运算是将任意长度的0和1,变成固定长度的0和1。所以,任何信息,不管多长,经过哈希运算后,都将输出固定长度的数据。当然,哈希算法不同,固定长度也不同,比如最简单的哈希算法“SHA1”,算出的结果是160位,也就是由160个0或1组成;比特币挖矿用到的是“SHA256”,算出的结果是256位。至于具体怎么算的,我们继续秉承最小知识集原则,不去管它。我们只要知道,哈希就是个黑箱子,不管进去的是姚明还是潘长江,抑或是一只蚂蚁,出来的都是HelloKitty!

我们在上面找一句话哈希一下试试:

比特币的密码学基础:哈希

嗯,就是这效果。你肯定要问,这么一个运算有什么用啊?用处大着呢,区块链技术里多处用到它,以后咱们会见着。现在,我们边聊它的特征,边聊它的应用。

1、 对所有信息都能进行处理:不留死角,使用范围无限制。

2、 不可逆:

运算不可逆,原始数据可以哈希出结果,但从结果无法得出原始数据。我们想想就知道,输出结果是固定长度的,比如128位,假如这128位是一篇几万字的文章哈希得来的,我们怎么可能从这128位算出一篇文章来?

所以,如果给你一个哈希值,然后要你找出它对应的原始值,那只有一个最野蛮的办法,那就是不停地找各种数据充当输入进行哈希,纯靠运气去试,哈希出来的结果与给定的结果一致,才算OK。比特币的挖矿就利用了哈希的这个特征,比特币系统给出一个满足特定条件的哈希值(比如说这个哈希值的前面多少位必须是0),然后让矿工去寻找对应的原始值。矿工们没办法,只能用最原始的办法不断尝试,谁先试出来谁就拿到比特币。矿工们为了竞争,于是不断加大芯片计算哈希的能力,进行军备竞赛。而这个计算哈希的能力便是算力,谁在1秒内能做更多的哈希运算,谁的算力就更大。

3、 差之毫厘,谬以千里:

我们看下面这个哈希,原始数据跟上图比,只是少了最后的句号,但哈希出来的结果完全变了样。

比特币的密码学基础:哈希

这个特征可以实现一个叫指纹或摘要的功能。比如说,我原创了一篇文章,打算存在区块链上留做证据,但如果原文不动存上去,太耗费资源了,但我可以把这篇文章先哈希一下,得到一个很短的哈希值,然后把这个哈希值存到区块链上就行了。因为别人要证明的话,只要拿我的文章哈希一下,再拿结果与区块链上存储的哈希值对比一下就知道是不是了。所以,哈希可以验证信息的完整性和真实性

4、 原始值与哈希值不是一一对应关系

因为原始值是不固定长度,而哈希值是固定长度,那肯定不是一一对应的。但如果不是一一对应,那就说明不同的原始值可能哈希出相同的哈希值,也就是“哈希碰撞”。那如果用这个方式来做证明,岂不是很不靠谱。

非也。

成年人考虑问题要看概率。拿最简单的SHA1来说,哈希结果是160位,这就意味着总的哈希值数量有2的160次方,也就说,两个原始值的哈希值一致的概率是2的160次方。你可能对2的160次方这个数字有多大,没什么概念。这么说吧,这个量比地球上的沙子还多,多出多少呢?也就是它的几亿或几十亿倍吧。

所以正常情况下,完全不用担心哈希碰撞的问题,因为概率太小了。

相关文章

  • 区块链学习

    比特币中的密码学 比特币主要应用了密码学中的两个技术:哈希、签名 哈希 哈希函数性质:collision resi...

  • 自学区块链(一)

    咱先了解下比特币的密码学原理 主要用到了密码学中的哈希和签名, 这个哈希函数(密码学中要求)的主要性质是 1、首先...

  • 链币谬误9则

    【#链币谬误#1 比特币是“加密”货币】真相:比特币运用了现代密码学许多基本技术,如哈希函数、数字签名等,恰恰没有...

  • 区块链密码学——哈希函数

    密码学是区块链以及一切网络安全相关产业的基础,而密码学中的哈希函数又被普遍运用到区块链中。拿比特币来说,其钱包地址...

  • 比特币之密码学应用

    由于比特币的去中心化安全机制是完全建立在密码学基础之上的,所以比特币家族又被称为“密码学货币”,可以说密码学是比特...

  • 比特币的密码学基础:哈希

    昨天我们讲了比特币的网络基础,即比特币的组网是P2P结构的,但我们并没有深入地讲P2P是如何实现的,因为P2P已经...

  • Hash的应用

    了解比特币以及了解学习比特币背后的区块链技术必然离不开对哈希值的学习,对于有编码功底以及密码学功底的人来说是是最简...

  • 比特币中的密码学详解

    上图描述了密码学的全部分类,以及其对应解决的信息安全分类。 比特币中涉及的密码学知识有: SHA-256(哈希函数...

  • 算法

    今天首先给大家介绍的是密码学中的哈希算法,哈希算法大家应该不陌生了,最突出的应用就在于比特币的挖矿了,简单回顾下挖...

  • 【#1-彭】加密经济学

    比特币为什么能够稳定运行? 哈希函数,区块链,BFT,POW。。。 这些统统都不重要,有利可图才重要。 密码学保护...

网友评论

      本文标题:比特币的密码学基础:哈希

      本文链接:https://www.haomeiwen.com/subject/bbmdiftx.html