Skip to main content
 首页 » 编程设计

python之检查 Django 在 Flask 中创建的密码哈希

2025年05月04日29sky-heaven

我有一个由 Django 生成的密码哈希。我想使用来自 Flask 的密码哈希登录用户。如何在 Flask 中验证密码?

from django.contrib.auth import hashers 
hash = hashers.make_password('pasword') 
# pbkdf2_sha256$20000$3RFHVUvhZbu5$llCkkBhVqeh69KSETtH8gK5iTQVy2guwSSyTeGyguxE=' 
 
PASSWORD_HASHERS = ( 
    'django.contrib.auth.hashers.PBKDF2PasswordHasher', 
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 
    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', 
    'django.contrib.auth.hashers.BCryptPasswordHasher', 
    'django.contrib.auth.hashers.SHA1PasswordHasher', 
    'django.contrib.auth.hashers.MD5PasswordHasher', 
    'django.contrib.auth.hashers.CryptPasswordHasher', 
) 

请您参考如下方法:

您可以使用 passlib使用密码哈希的包。它带有 support for Django's hash format .您的示例哈希使用 pbkdf2_sha256,因此请使用相应的 passlib 哈希:

from passlib.hash import django_pbkdf2_sha256 
hash = 'pbkdf2_sha256$20000$3RFHVUvhZbu5$llCkkBhVqeh69KSETtH8gK5iTQVy2guwSSyTeGyguxE=' 
user_input = 'password' 
django_pbkdf2_sha256.verify(user_input, hash) 

如果要支持多种格式,like Django does ,您可以使用预配置的 Django context ,或者使用 Django 的 PASSWORD_HASHERS 中的任何顺序创建您自己的。

from passlib.apps import django_context 
hash = 'pbkdf2_sha256$20000$3RFHVUvhZbu5$llCkkBhVqeh69KSETtH8gK5iTQVy2guwSSyTeGyguxE=' 
user_input = 'password' 
django_context.verify(user_input, hash)