在Django框架的密码散列中加入'random salt'是什么意思?

时间:2011-07-29 18:00:35

标签: django passwords hash salt

我是Django框架中的新手。在django的默认身份验证系统中,我发现django以algorithm$salt$hashed格式存储用户密码。每个用户的盐并不相同; django为每个用户生成每个新的盐。

我已经制作了几个网页并且有很多机会使用其他开源软件,但是总是只有“一个”盐字符串用于散列。

所以,我的问题是:

  1. 为什么django在'one'盐串旁边使用'随机'盐?
  2. 为什么django使用密码哈希将它存储在同一列中?

3 个答案:

答案 0 :(得分:6)

  

为什么django在'one'盐串旁边使用'随机'盐?

因为如果你有一个盐,你可以比你的随机盐更容易为你的数据库生成彩虹表。

如果您想生成彩虹表来解密django哈希,则必须为数据库中的每个不同的盐生成表。彩虹表的生成需要很长时间,它只是蛮力或字典攻击。

  

为什么django使用密码哈希将其存储在同一列中?

我不知道你具体询问的是什么,但可能有2个答案。

- 它存储是因为某人以这种方式设计它。它可能在盐场上并不重要。

- 当用户通过表单django将salt连接到字符串并且比计算sha1并检查它是否与db中的那个匹配时,发送密码。

答案 1 :(得分:3)

随机盐阻止使用彩虹表快速解密表中的所有密码。相反,他们必须分别做每一个。

答案 2 :(得分:1)

腌制密码的做法旨在使攻击者更难以破解您存储的密码。 More info