有谁知道在身份验证过程中如何使用salt? 虽然我已经通过互联网搜索但仍然不太懂。有人可以帮忙吗? 非常感谢你!
答案 0 :(得分:3)
常见用法是盐渍哈希。除了听起来很美味外,它还是这样......
加密值的一种方法是创建一种双向加密机制,该机制使用密钥加密和解密密码。这可能会有问题,因为如果有人获得了密钥,他们就可以解密任何东西。例如,如果有人可以访问您的数据库并且可以解密一个用户的密码,那么他们就可以解密每个用户的密码。再加上可以解密这些值的事实可能会带来安全风险。
另一个选择是创建一个哈希。这是单向排序加密,始终提供相同的结果。这可能是有益的,因为它可以消除解密值的需要,因为要检查用户的密码,您只需将其哈希并查看它是否与数据库中的哈希值匹配。但是,由于哈希算法本身通常不安全,因此这两个缺点是,任何具有相同密码的人都将拥有相同的加密值。因此,如果您可以获得一个人的密码,您可以轻松找出其他人拥有相同的密码。此外,它很容易通过哈希算法运行整个字典,以查看谁有一个弱密码。
因此改进散列的方法是添加一个salt值。在对用户密码进行哈希处理之前,只需在通过哈希算法运行之前,将用户名(或用户ID或其他对用户不变但对其唯一的内容)添加到其中。这样每个人都会获得不同的加密值,但每个人的哈希值对于他们自己的帐户仍然是可重复的。此外,它还可以降低字典攻击的风险,因为您知道进入哈希时的值不是来自字典。有人必须在暴力攻击中包含每个用户的用户名或用户ID或其他内容,因此即使一个人受到攻击,黑客也必须从头开始为每个其他用户,即使是那些密码相同的用户。