简单、快速了解区块链中的哈希值Hash

发布时间 2019-08-12

  我建议,像类似非人名命名,而是用某个东西来命名的算法(不管中英文),最好的学习方式就是从名字本身入手,因为算法被命名的时候,设计者肯定是有某种联想的!

  哈希算法,就是用来把任意长度的有规则的数据弄乱成一个固定长度的数据的一种函数。

  这样是最简单最方便的密码储存的模式,也是最早的密码储存方式。但是,风险也很明显,密码极其容易被盗,只要黑进了数据库,那么所有用户信息都会遗失。

  对用户密码用哈希算法进行初级加密,加密完的密码才存入数据库,示意图如下。

  进行初级加密后,即使数据库被攻击了,黑客拿到的也只是密码的哈希值,根据哈希算法的特性,黑客是无法通过哈希值反推得到密码的,所以黑客攻破了数据库也没什么用。

  黑客也不是吃素的,后来黑客发明了“彩虹表攻击(Rainbow Table Attack)”,使得攻击经过哈希算法加密的密码成为可能。(*特别说明:由于了解彩虹表很有必要,我专门写了一篇关于彩虹表和彩虹表攻击的文章,见上面链接)

  世界就是这样,有攻就有防,事物的发展就是在这种作用与反作用之间交替前进。为了应对彩虹表攻击,大神们绞尽脑汁,发明了一种“加盐的哈希算法”。

  首先,什么是盐?盐就是一组随机的字符串。把这组随机的字符串接上密码(也就是“撒盐”,嗯,确实很形象~),再用哈希算法一并进行加密。95期香港挂牌之全篇,原理如下图。

  加盐算法的优势就是,因为撒了盐,所以黑客再使用彩虹表攻击,难度呈指数级增长。