2013-02-22 95 views
0

django文档,它说的Django创建密码字符串algo$hash存储在Django和彩虹表密码

其中ALGO是pbkdf2默认和散列密码字符串的sha256哈希值。

在某些articles,我读了一个安全的密码使用随机salt,然后将其存储在数据库中的每个user.This很难让谁试图打破使用rainbow table s.But密码恶意用户创建当我为我的django项目检查auth_user表时,我只能找到一个字符串,每个用户开始'pbkdf2_sha256$'。我找不到任何存储的盐。

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

+0

你的“单串”看起来像什么?我得到了'pbkdf2_sha256 $ 10000 $ GDDpkxbrqR4j $ DnpLSj4P91ylVfYvtWFs69cdhJiSnLP1G1rw9m4CLCY ='',它包含一个盐份''GDDpkxbrqR4j'',默认为'pbkdf2_sha256'算法。 – okm 2013-02-22 05:33:41

+0

好的,我的也是从pbkdf2_sha256 $开始的,但是为什么盐没有存储在数据库中呢? – damon 2013-02-22 05:55:05

回答

1

Django文档明确指出,它散列的口令与盐herehere

一个用户对象的密码属性是在这个格式的字符串:

hashtype $盐$哈希

这是哈希类型,盐和哈希,由美元符号 字符分隔。

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

所以会出现2个美元符号,而在之间是盐。