1

django文档中,它说 django 将密码创建为字符串algo$hash

其中 algo 是pbkdf2默认值,hash 是sha256密码字符串的哈希值。

在一些文章中,我读到一个安全密码是使用随机创建的salt,然后存储在每个用户的数据库中。这使得试图使用 s 破解密码的恶意用户很难。但是rainbow table当我检查 auth_user 表时对于我的 django 项目,我只能找到一个'pbkdf2_sha256$'以每个用户开头的字符串。我找不到任何存储的盐。

这是否意味着存储的密码容易受到使用 raibow 表的攻击?

4

1 回答 1

1

Django 文档明确声明它在这里这里使用盐对密码进行哈希处理:

User 对象的密码属性是以下格式的字符串:

哈希类型$salt$hash

那是 hashtype、salt 和 hash,由美元符号字符分隔。

Hashtype 是 sha1(默认)、md5 或 crypt——用于对密码执行单向哈希的算法。Salt 是一个随机字符串,用于对原始密码进行加盐以创建散列。请注意,只有具有标准 Python crypt 模块可用的平台才支持 crypt 方法。

所以会有2个美元符号,中间是盐。

于 2013-02-22T08:44:47.117 回答