什么是哈希算法?(上)

什么是哈希算法?(上)

亚洲财经商学院

关注

什么是哈希算法?(上)

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

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

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

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

哈希算法的定义

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

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

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

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

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

举个例子: 1、《大海捞图》

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

应用的场景有哪些?

举个例子: 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……并没有绝对最好的哈希算法。只有在不同场景下,衡量成本收益之后,才存在相对最优。

强烈推荐!

中国首家可挖矿的区块链化教育平台

免费囤币,坐等升值!

1500万枚AFCC送!送!送!

(扫码下载【亚财商学院】APP)

来源/转自/区块链学习网

精彩推荐

  • 感谢原作者的辛苦创作,如转载涉及版权等问题,请联系我们进行删除处理,谢谢!!

关于我们

  • 亚洲财经商学院(简称亚财商学院)是由亚洲财经发起成立,清华大学等院校合作办学,是中国首家互联网金融黄埔军校。

  • 专为在校大学生、普通投资者、金融从业者、拟从业者等有互联网金融教育需求的用户提供学历教育、职业教育、实践教育、资格认证等四方面培训课程。

联系我们

长按二维码关注我们吧

↓↓↓


分享到:


相關文章: