如何绕过auth实现Django的密码散列?

时间:2012-09-16 16:31:09

标签: python django

我们正在创建一个用户登录和注册系统,并决定绕过Django的auth(由于一些原因,这超出了这个问题的范围)。

我们仍然需要对我们的密码进行加密,并且仍然希望使用auth实现的密码(pbkdf2_sha256,我相信)。我们可以自己滚动,但如果可以的话,宁愿使用Django(再次,不使用auth包)。

看看我们的Django安装(我们有1.4.1,最新版本),我们找到了auth文件夹(以及一个名为hashers.py的文件)但是,对python来说是新手,我不确定从哪里开始用于加密我们的密码。

谢谢!

编辑:

根据收到的评论和回答,我决定使用内置的方法和表格。

1 个答案:

答案 0 :(得分:3)

如果您查看the source of django's set_password,可以看到它调用了make_password函数,这可能就是您要查找的内容。

然后,您可以使用django's check_password来验证密码。

这确实增加了对django.contrib.auth的依赖,因为这些函数在django.contrib.auth.hashers中定义,但这是Django的标准,所以我不认为这是一个问题。 此外,django.contrib.auth.hashers不依赖于django.contrib.auth的任何内容。

但是,我可以只支持您应该使用默认django auth软件包的评论中给出的建议 - 特别是考虑到我们在这里谈论安全关键部分。

顺便说一下,用于散列密码的算法实际上是由the PASSWORD_HASHERS设置控制的。