专栏名称: 天上不会掉馅饼
让大家认清一些披着金融投资外衣的诈骗的真相,防止上当受骗。夹带普及一些投资方面的常识。
目录
51好读  ›  专栏  ›  天上不会掉馅饼

关于哈希算法

天上不会掉馅饼  · 公众号  ·  · 2022-07-18 21:42

正文

哈希算法有时候被称之为摘要,这个比喻有点不精确,因为摘要毕竟还是要让人看懂的,而哈希算法后的数字,人是完全读不懂的。而且我们哈希后的字符串可能比原文还要长,所以这个比喻不太恰当。

简单来说,通过哈希算法:

  1. 同样的输入一定会有同样的输出。但你拿输出要想还原输入则不可能。

  2. 无论多长或者多短的输入,输出都是一样长的。

  3. 改动一点点,输出就会完全不一样,且毫无规律。

用点例子就秒懂了。

我们这里用Python现成的库来实验SHA256算法。

运行结果:

输出:185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

完全看不懂是什么,重点是当我们知道输出是185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

完全没办法还原成原始信息Hello,但这不是随机数。


只要输入信息一致,结果肯定是完全一样:


如果输入有哪怕一点点小小的不一样,结果会完全不同,并且完全无法预测。


只是把Hello的第一个字母改成小写的h,两者的结果完全看不出联系。

2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824这个结果和185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969是看不出啥联系的,这个效应称之为“雪崩效应”。

也就是说, 哪怕任何一点点不同的输入都能保证有不同的输出,并且不可逆。

并且,长度不一样的信息哈希后,长度是一致的。



不同长度的字符串哈希后,结果的长度是一致的。

这里有个问题,输出的字符串的长度必然是一致的话,哈希的结果应该是有穷的。但我们输入的信息可能性是无穷的,这意味着必然有“撞车”事件发生。理论上是的,但不必担心,这种事情发生的概率很小,可以忽略不计。

哈希算法的用处很多,比如我们验证文件下载是否完整时,就会应用到。因为哪怕一个字节有不一样,雪崩效应也会让哈希后的值完全不一样,所以哈希值一样可以保证你下载的文件和上传者的完全一致。







请到「今天看啥」查看全文