Skip to main content

为什么要密码加盐

用户密码加盐的原理是什么?为什么要加盐

"加盐"是指在密码哈希过程中,在密码字符串前加入一段随机的字符串,这段字符串称为“盐”。

加盐的目的是为了防止密码字典攻击,防止通过预先准备的字典来破解用户的密码。如果所有用户的密码都是明文存储,黑客可以对密码数据库进行暴力破解,并将所有加密过的密码拿到字典中进行匹配。然而,如果在加密前将盐随机添加到密码字符串中,即使黑客知道了一个用户的密码哈希值,也无法使用相同的方法对其他用户的密码进行破解,因为盐是随机的,每个用户的盐都不同。

在加密过程中,首先对密码和盐进行拼接,然后再进行哈希计算,将哈希值存储在数据库中。在验证密码时,需要重新拼接盐和密码,再进行哈希计算,与数据库中的哈希值进行比对,如果相同,则说明密码输入正确。

总的来说,加盐技术是一种防止密码字典攻击的有效方法,可以提高密码安全性。

举个例子

比如用户设置的密码非常简单 是 123456 如果黑客使用字典碰撞方法,比方说 123456 的哈希值是@@#@#@# 黑客的字典里面有这个,那么很容易就可以碰撞出这个密码 但是如果我使用加了随机字符串 哈希值就变得非常奇怪了 黑客就无法撞出密码了。需要注意的是,我们需要在本地存放用户的盐值是多少 不然就无法做登录校验了。

回顾一下登录校验

用户输入用户名 密码

根据用户名找到数据库的数据

将用户输入的密码结合 salt 进行哈希计算

计算结果和数据库存放的数据比较

如果一致就登录成功

否则登录失败