5分钟快速了解区块链中的哈希值Hash(用户密码存储举例说明)?

在区块链中,下一个区块和上一个区块通过哈希来链接。

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

从字面意思入手(我是谁?)

首先,来看Hash这个单词的意思。
这里写图片描述
意思很明显,就是杂乱无章的东西,动词即把XXX弄乱。

so,到这里,我们大概就明白了,哈希值就是一堆杂乱无章的乱码

哈希值如何生成?(我从哪里来?)

哈希值,是一段数据通过哈希算法后生成的乱码。
这里写图片描述
哈希算法,就是用来把任意长度的有规则的数据弄乱成一个固定长度的数据的一种函数

哈希值在用户密码存储上的应用(我到哪里去?)

  1. 最简单的用户密码(不加密)

    用户针对自己账户创建完密码后,密码直接存入数据库,示意图如下。
    这里写图片描述
    这样是最简单最方便的密码储存的模式,也是最早的密码储存方式。但是,风险也很明显,密码极其容易被盗,只要黑进了数据库,那么所有用户信息都会遗失

  2. 改良的用户密码(初级加密)

    对用户密码用哈希算法进行初级加密,加密完的密码才存入数据库,示意图如下。
    这里写图片描述
    进行初级加密后,即使数据库被攻击了,黑客拿到的也只是密码的哈希值,根据哈希算法的特性,黑客是无法通过哈希值反推得到密码的,所以黑客攻破了数据库也没什么用。

    但是!

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

  3. 再改良的用户密码(高级加密)

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

    首先,什么是盐?盐就是一组随机的字符串。把这组随机的字符串接上密码(也就是“撒盐”,嗯,确实很形象~),再用哈希算法一并进行加密。原理如下图。
    这里写图片描述
    加盐算法的优势就是,因为撒了盐,所以黑客再使用彩虹表攻击,难度呈指数级增长。

猜你喜欢

转载自blog.csdn.net/weixin_35684521/article/details/82460320