我们有一个用 PHP 编写的系统,其中帐户密码存储为密码漩涡哈希的前 128 个字符。
我想过渡到使用 Django 处理登录,而不更改数据库或要求用户更改密码。此外,我更愿意坚持使用漩涡而不是 Django 内置的不太安全的哈希。我发现漩涡的 python (C) 实现似乎工作正常。
如何更改 Django 密码检查功能以使用 Whirlpool 而不是 SHA1/MD5?
我们有一个用 PHP 编写的系统,其中帐户密码存储为密码漩涡哈希的前 128 个字符。
我想过渡到使用 Django 处理登录,而不更改数据库或要求用户更改密码。此外,我更愿意坚持使用漩涡而不是 Django 内置的不太安全的哈希。我发现漩涡的 python (C) 实现似乎工作正常。
如何更改 Django 密码检查功能以使用 Whirlpool 而不是 SHA1/MD5?
基本上,您想编写自己的身份验证后端。幸运的是,这可以很容易地完成。
这很简单:
class MyBackend:
def authenticate(self, username=None, password=None):
# Check the username/password and return a User.
AUTHENTICATION_BACKENDS
然后你需要做的就是通过设置为指定后端类('django.contrib.auth.backends.YourCustomBackend',)
。
请参阅:http ://docs.djangoproject.com/en/dev/topics/auth/#specifying-authentication-backends