摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。近年来,随着计算机性能的飞速改善,加密速度不再成为限制这种加密技术发展的桎梏,因而消息摘要算法应用的领域不断增加。
ps:这个时候黑客大兄弟发话了:“这点问题能难倒我?虽然我不能直接获取到你们的明文密码,但是我还有其他办法可以破解你们的用户密码的 ”
原来这位黑客自己也有一个数据库,他的数据库中保存着我们所有密码的排列组合与摘要的一个对应关系。这样一来他就可以通过用户密码的摘要与自己数据库中的摘要进行匹配。匹配成功后,这串摘要对应的密码就代表着用户的密码。这也就是常说的彩虹表攻击。
有攻击自然就有防御
刚才的黑客之所以还能够破解用户的密码,无非就是因为他知道了我们具体的摘要算法,然后通过相同的算法,列举出我们所有密码的组合结果并保存在了自己数据库中进行匹配 。 ok 既然如此,那么我们可以在生成用户密码摘要时放点额外的东西进去,这样一来就可以生成完全不一样的摘要信息。同时为了避免黑客知道我们放了什么东西进去,然后采用相同的手法攻击我们,我们还可以针对每一个用户放不同的东西进去(例如用户id、身份证号、手机号等)。这样一来我们的安全性就有了很高的保证。(这个东西被称之为“盐(salt)”)
ps:黑客大兄弟已经哭晕在厕所
在这里插入图片描述