区块链科普:什么是哈希算法2?

Posted 区块链学习网

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链科普:什么是哈希算法2?相关的知识,希望对你有一定的参考价值。


带着问题阅读会更高效噢:

1、概念的理解,即什么是哈希算法?

2、哈希算法的应用场景?

3、哈希算法有哪些特征?

 

哈希算法的定义

哈希算法又叫散列算法,是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。它的原理其实很简单,就是把一段交易信息转换成一个固定长度的字符串。

 

这串字符串具有一些特点:

 

1. 信息相同,字符串也相同。

2. 信息相似不会影响字符串相同。

3. 可以生成无数的信息,但是字符串的种类是一定的,所以是不可逆的

 

Example: 1、《大海捞图》

 

让我们举个例子理解一下:如果我们要搜一张图片,在没有人工标注的情况下,于巨大的图库中想要以图搜图是一件及其庞大而又困难的工作量。可是在训练集上,通过哈希算法,可以得到一系列哈希函数,通过这些函数,可以将每一张图片转化成一串0~1的编码。

 

关键词:映射 哈希值

 

应用的场景有哪些?

 

Example: 2、《生活处处要编号》

 

你去上学,班主任会告诉你一个学号;毕业后上班,HR会给你一个工号;你回家,抬头看得到门牌;你去桑拿,前台会给你一块手牌;

 

站在管理者的角度看,为了把一摊事管得有秩序,就得排序。这样协作系统能定位目标,更好地服务。否则,课程没法排,工资没法算,快递员找不到你家,甚至在你洗完澡结账时都会纠结半天,因为前台搞不清你到底吃了多少果盘。

 

编号,要解决两个问题:

 

1)能定位;

2)无重号。

 

Ø 小规模编号,比如班级学号,从1、2、3……开始,就能解决问题;

Ø 中等规模的如大企业工号,数字前面得加个字母:A120908;

Ø 大规模编号如身份证系统,别管谁进来,统一18位数字标签贴在你的身份证上。

 

但,如果是给互联网里的所有文件编号,标签应该如何贴呢?那可是星辰大海呀,如果按老办法排序,那得到千年后才能给你现在看的这篇文章编上号。而且遇到重号问题如何解决?是否专门安排公务员管这摊事?

 

那有没有效率更高的编号方法?有,答案是哈希算法。

 

 

哈希的特点?

 

 

易压缩:对于任意大小的输入x,Hash值的长度很小,在实际应用中,函数H产生的Hash值其长度是固定的。

 

易计算:对于任意给定的消息,计算其Hash值比较容易。

 

单向性:对于给定的Hash值,要找到使得在计算上是不可行的,即求Hash的逆很困难。在给定某个哈希函数H和哈希值H(M)的情况下,得出M在计算上是不可行的。即从哈希输出无法倒推输入的原始数值。这是哈希函数安全性的基础。

 

抗碰撞性:理想的Hash函数是无碰撞的,但在实际算法的设计中很难做到这一点。

 

有两种抗碰撞性:一种是弱抗碰撞性,即对于给定的消息,要发现另一个消息,满足在计算上是不可行的;另一种是强抗碰撞性,即对于任意一对不同的消息,使得在计算上也是不可行的。

 

高灵敏性:这是从比特位角度出发的,指的是1比特位的输入变化会造成1/2的比特位发生变化。消息M的任何改变都会导致哈希值H(M)发生改变。即如果输入有微小不同,哈希运算后的输出一定不同。

 

 

什么是好的哈希算法?

 

 

正如前文维基百科的定义:哈希算法只是将文件映射为哈希值,“映射”的意思是投影。既然是投影,那总会不同的人有一模一样的影子。所以最终在数学意义上,哈希会发生重号,只是重号概率小到我们难以理解地接近零。

 

这种无限接近零的概率类似于:明天一早你突然当选美国总统、你从小到大每天都中六合彩,或者下一秒49个外星人在你面前排成7×7方阵……的概率。但万一碰到了呢?我们把这种情况称为碰撞。

 

越好的哈希算法发生碰撞的概率越小。

 

可如果只为完成“少发生碰撞”这一个目标,很容易实现,你只要把哈希值弄得长长的就可以了。但哈希值最终不是纯数字编号,而是数字与字母的组合,目的也只有一个:缩短哈希值长度,便于实际应用。毕竟,没有人会带一根1米的香肠出差。

 

如果你要自建一个小型图片网站,使用CRC-32短哈希算法给图片贴标签就足够了,它能为你提供42亿种不同的标签,而且文件名长度(哈希值)永远只有8位。

 

如果你要检索论文库,MD5算法足够你用:哈希值稍长,但几乎不会有重复,能让你做出足够精准的索引。

 

而商业级加密,你可以用SHA256:哈希值稍长,但倒推难度极大:需要人类当前所有计算能力总和的千万倍……还不一定能算出来。

 

所以,无论是CRC-32、MD5、SHA256……并没有绝对最好的哈希算法。只有在不同场景下,衡量成本收益之后,才存在相对最优。

 

 

 

恭喜你,今天又精进了一步。




带着问题阅读会更高效噢:


1、概念的理解,即什么是哈希值?


2、哈希值有哪些特征?


3、哈希算法的影响?

 

 

什么是哈希值?

 

 

任何计算机文件都由电子讯号组成。简单地说:0和1组成了全部的信息世界,即:比特世界。

 

 

 

比如,我们眼中的香肠图片,在比特世界里是这样的:01010111001111010101100101110101……

 

我没写完整,上万位吧,写完得一屋子,总之就是0和1两个数字排成了一条长龙,这才是这张图片在比特世界里的本来面目,我们把这串长龙称为“二进制文件”。

 

我们把这条长龙切碎,搅拌之后就得到哈希值:4f7f56ecc0b725893b59f6428258304a94e40f48

 

哈希值是哈希算法的最终结果,是文件在互联网里的编号。如果这张图片是一个人,那哈希值就是TA的指纹、TA的身份证编号。

 

你完全不用理解哈希算法如何把二进制文件变成哈希值,这是数学家的事,你只要把哈希函数看作一台屠宰机器,就能理解一切:这台机器把任何猪都能剁成等长的香肠,而哈希值就是这根香肠的花纹。

 

除了所有哈希值都一样长之外,这些花纹有一些其他漂亮的特性,能轻巧地用在比特世界的方方面面。

 

哈希值的特性

 

 

 

如果你看到两个文件有完全相同的哈希值,那你立马可以判定它们是同一文件。这也是哈希值最基本的特性:相同文件的哈希值相同,即,复制后的文件与原文件哈希值相同。

 

这容易理解,因为既然是两只一模一样的猪,那它们用相同方法做出来的香肠应该一模一样。但如果两只猪其他部位完全相同,哪怕它们尾巴尖上的一根毛不同,那香肠最终的纹理会完全不同。

 

源文件稍有改动,哈希值面目全非。

 

这一特性使得用哈希值标注的文件无法被篡改,因为哪怕只篡改上图一个像素,马上就能被认出——哈希值会完全不同。

 

另外,哈希值还有的特性:

 

第一、不可逆推:在具备编码功能的同时,哈希算法也作为一种加密算法存在。即,你无法通过分析哈希值计算出源文件的样子,换句话说:你不可能通过观察香肠的纹理推测出猪原来的样子。

 

第二、计算极快:哈希一部20G高清电影和一个5K文本文件复杂度相同,计算量都极小,可以在0.1秒内得出结果。也就是说,不管猪有多肥,骨头多硬,做成香肠都只要眨眨眼的时间,

 

能用极快的速度给你的文件编出不重复的号码,而且任何人都无法通过这个号码推算出文件原来的样子,这就是哈希算法的意义。

 

把文件切碎和搅拌的过程就是哈希算法,而切碎和搅拌的动作,称为加密和压缩,而不同的烧菜师傅会有不同的刀法,于是就有了很多哈希算法,比如:CRC-32、MD5和SHA1……名字虽然唬人,可它们之间只是张家师傅和李家师傅的区别,但不同师傅之间的刀功却有高下,那差距究竟在哪里呢?

 

哈希算法会不会被破解?


从理论上说,哈希值是可以被获得的,但是对应的用户密码很难获得。

 

假设一个网站被攻破,黑客获得了哈希值,但仅仅只有哈希值还不能登录网站,他还必须算出相应的账号密码。

 

计算密码的工作量是非常庞大且繁琐的,严格来讲,密码是有可能被破译的,但破译成本太大,被成功破译的几率很小,所以基本是不用担心密码泄露的。

 

当然,黑客们还可以采用一种物理方法,那就是猜密码。他可以随机一个一个的试密码,如果猜的密码算出的哈希值正好与真正的密码哈希值相同,那么就说明这个密码猜对了。

 

密码的长度越长,密码越复杂,就越难以猜正确。如果有一种方法能够提高猜中密码的可能,那么可以算是哈希算法被破解了。

 

比如说,例如原本猜中的概率是1/10000000000000,现在增加到了1/1000。如果每猜一个密码需要1秒,按照之前的概率猜,直到地球毁灭都可能没猜中,但后者只需要1小时就足够了。在这样的情况下,哈希算法就算是被破解啦。

 

哈希算法的影响


二十年前,如果你去图书馆找一本名叫《美国种族简史》的书,得先思考它属于宗教类还是历史类,然后再跑去不同的区域爬格子。而现在,你只需轻轻一点,整个屏幕就会告诉你有没有这本书,如果有,那它在哪里。

 

图书馆用的小规模搜索技术贴标签:以前是手工分类,现在是数据库。

 

而互联网级别的大规模的搜索就得靠哈希算法生产索引标签了。比如Google等搜索引擎、迅雷等下载软件、比特币等加密货币……都能通过哈希值准确定位目标。

 

即使哈希算法乍看起来毫不起眼,无非做出了一串奇怪的字符,但它却是比特世界里的板砖,能搭出高楼大厦,能让比特世界更有序。即使离你再远的信息,在哈希算法的帮助下,都可以让你触手可及。 

 

好啦,看到这里你是不是对哈希算法有了初步的了解?大家也不要过于担心你的账户以及资产被黑的风险,因为哈希算法仅仅只是比特币的原理算法,还有其他算法一同作用于比特币的运行,因此就算破解了哈希算法也并不能盗取你的账户信息

区块链科普:什么是哈希算法2?


文章来源网络,如侵权请联系后台

区块链科普:什么是哈希算法2?

接收区块链第一手资讯

区块链科普:什么是哈希算法2?

区块链科普:什么是哈希算法2? 区块链科普:什么是哈希算法2? 区块链科普:什么是哈希算法2? 区块链科普:什么是哈希算法2? 区块链科普:什么是哈希算法2? 区块链科普:什么是哈希算法2? 区块链科普:什么是哈希算法2? 区块链科普:什么是哈希算法2?

区块链科普:什么是哈希算法2? 区块链科普:什么是哈希算法2? 区块链科普:什么是哈希算法2? 区块链科普:什么是哈希算法2? 区块链科普:什么是哈希算法2?   

以上是关于区块链科普:什么是哈希算法2?的主要内容,如果未能解决你的问题,请参考以下文章

『区块链科普』什么是哈希算法?(下)

科普 | 区块链技术不可撼动的基石:哈希函数

科普 | 学习区块链过程中的高频概念:哈希函数

区块链知识储备-哈希算法和数字签名

►动画哈希算法是什么?丨区块链100问 第59集

区块链非对称加密的简单科普