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

lqe*_*qez 2 passwords django hash salt

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

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

所以,我的问题是:

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

Zel*_*elo 6

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

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

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

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

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

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

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