gpt4 book ai didi

encryption - 如果密码存储在数据库中,那么使用盐如何使密码更安全?

转载 作者:行者123 更新时间:2023-12-03 06:54:17 26 4
gpt4 key购买 nike

我目前正在学习 Rails,但答案不一定是特定于 Rails 的。

因此,据我了解,安全密码系统的工作原理如下:

  • 用户创建密码
  • 系统使用加密算法(例如 SHA2)对密码进行加密。
  • 将加密密码的哈希值存储在数据库中。

尝试登录时:

  • 用户尝试登录
  • 系统使用相同的加密算法创建尝试哈希
  • 系统将尝试的哈希值与数据库中的密码哈希值进行比较。
  • 如果匹配,他们就可以进入。如果不匹配,他们必须重试。

据我了解,这种方法会受到彩虹攻击 - 其中可能会发生以下情况。

攻击者可以编写一个脚本,该脚本本质上会尝试字符、数字和符号的每种排列,使用相同的加密算法创建散列,并将它们与数据库中的散列进行比较。

所以解决方法是将哈希值与唯一的盐结合起来。在许多情况下,是用户注册的当前日期和时间(低至毫秒)。

但是,该盐存储在数据库列“盐”中。

所以我的问题是,这如何改变这样一个事实:如果攻击者首先访问数据库并为“真实”密码创建了哈希值,并且还拥有盐的哈希值,那么这是如何的不只是受到彩虹攻击吗?因为,理论上他会尝试每个排列+盐哈希并将结果与​​密码哈希进行比较。只是可能需要更长的时间,但我不认为它是万无一失的。

请原谅我的无知,我只是在学习这些东西,这对我来说从来没有多大意义。

最佳答案

盐(随机选择)的主要优点是,即使两个人使用相同的密码,哈希也会不同,因为盐会不同。这意味着攻击者无法预先计算常用密码的哈希值,因为不同的盐值太多。

请注意,盐不必保密;它必须足够大(例如 64 位)并且足够随机,以便两个使用相同密码的人也使用相同盐的机会微乎其微。 (如果您愿意,您可以检查盐是否是唯一的。)

关于encryption - 如果密码存储在数据库中,那么使用盐如何使密码更安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4005826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com