Django 内置的User类提供了用户密码的存储、验证、修改等功能,默认使用pbkdf2_sha256方式来存储和管理用的密码。

    django通过PASSWORD_HASHERS来设置选择要使用的算法,列表的第一个元素 (即settings.PASSWORD_HASHERS[0]) 会用于储存密码, 所有其它元素都是用于验证的哈希值,它们可以用于检查现有的密码。意思是如果你打算使用不同的算法,你需要修改PASSWORD_HASHERS,来将你最喜欢的算法在列表中放在首位。

    一个settings中的Password_hashers看起来是这样的:

    1. PASSWORD_HASHERS = (
    2. 'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    3. 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
    4. 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    5. 'django.contrib.auth.hashers.BCryptPasswordHasher',
    6. 'django.contrib.auth.hashers.SHA1PasswordHasher',
    7. 'django.contrib.auth.hashers.MD5PasswordHasher',
    8. 'django.contrib.auth.hashers.CryptPasswordHasher',
    9. )

    具体的密码生成以及验证实现

    1. from django.contrib.auth.hashers import make_password, check_password
    2. pwd='4562154'
    3. mpwd=make_password(pwd,None,'pbkdf2_sha256') # 创建django密码,第三个参数为加密算法
    4. pwd_bool=check_password(pwd,mpwd)# 返回的是一个bool类型的值,验证密码正确与否