首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果将salt存储在数据库中,那么使用salt如何使密码更加安全?

如果将salt存储在数据库中,那么使用salt如何使密码更加安全?
EN

Stack Overflow用户
提问于 2010-10-23 20:05:46
回答 2查看 3K关注 0票数 13

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

因此,据我所知,安全密码系统的工作方式如下:

password

  • System

  • 用户使用加密算法(例如SHA2)创建加密密码。
  • 存储数据库中加密密码的散列。

登录时尝试:

algorithm

  • System用户尝试登录

  • 系统创建相同加密的哈希,比较数据库中的尝试哈希和密码哈希,

  • 如果匹配,则输入。如果没有,他们必须再试一次。--

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

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

因此,它的方法是将散列与唯一的盐类结合起来。在许多情况下,用户注册的当前日期和时间(下至毫秒)。

但是,此salt存储在数据库列“salt”中。

因此,我的问题是,这如何改变这样一个事实:如果攻击者首先访问了数据库,并创建了“真实”密码的哈希,同时也有了salt的哈希,这怎么不只是受到彩虹攻击呢?因为,理论上他会尝试每一个置换+盐类哈希,并将结果与密码哈希进行比较。可能需要更长的时间,但我不认为这是万无一失的。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-23 20:09:23

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

请注意,盐不一定要保密;它只需要足够大(例如64位)和随机,两个使用相同密码的人也使用相同的盐的可能性极小。(如果你愿意的话,你可以检查盐是独一无二的。)

票数 8
EN

Stack Overflow用户

发布于 2010-10-23 20:09:44

攻击者不能进行彩虹表攻击,必须使用暴力,效率要低得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4005826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档