Authentication 如何在认证过程中使用salt?

Authentication 如何在认证过程中使用salt?,authentication,Authentication,有人知道在认证过程中如何使用salt吗? 虽然我在网上搜索过,但还是不太明白。有人能帮忙吗? 多谢各位 一个常见的用法是咸杂烩。除了听起来很美味,它的工作原理是这样的 加密值的一种方法是创建双向加密机制,该机制使用密钥加密和解密密码。这可能会有问题,因为如果有人获得了密钥,他们可以解密任何东西。例如,如果有人可以访问您的数据库并可以解密一个用户的密码,那么他们就可以解密每个用户的密码。再加上可以对这些值进行解密这一事实可能会带来安全风险 另一个选项是创建散列。这是一种单向加密,总是提供相同的结果

有人知道在认证过程中如何使用salt吗? 虽然我在网上搜索过,但还是不太明白。有人能帮忙吗?
多谢各位

一个常见的用法是咸杂烩。除了听起来很美味,它的工作原理是这样的

加密值的一种方法是创建双向加密机制,该机制使用密钥加密和解密密码。这可能会有问题,因为如果有人获得了密钥,他们可以解密任何东西。例如,如果有人可以访问您的数据库并可以解密一个用户的密码,那么他们就可以解密每个用户的密码。再加上可以对这些值进行解密这一事实可能会带来安全风险

另一个选项是创建散列。这是一种单向加密,总是提供相同的结果。这可能是有益的,因为它可以消除解密值的需要,因为要检查用户的密码,您只需对其进行散列,然后查看它是否与数据库中的散列值匹配。然而,这有两个缺点,因为哈希算法本身通常不安全,所以任何拥有相同密码的人都将拥有相同的加密值。因此,如果你能得到一个人的密码,你就可以很容易地找出谁有相同的密码。此外,它很容易通过哈希算法运行整个字典来查看谁的密码较弱


因此,改进散列的方法是添加一个salt值。在散列用户密码之前,只需在其中添加用户名(或用户ID或其他对用户来说是常量但对用户来说是唯一的),然后再通过散列算法运行它。这样每个人都将获得不同的加密值,但每个人的哈希值仍然可以为自己的帐户重复。此外,它还降低了字典攻击的风险,因为您知道当进入哈希时,该值不是来自字典。有人必须在暴力攻击中包括每个用户的用户名或用户ID或其他任何内容,因此即使有一个人受到攻击,黑客也必须从零开始攻击其他所有用户,即使是拥有相同密码的用户

你读过什么,不懂什么?谢谢你的回复。这很有帮助!=)