Django自帶的加密算法及加密模塊

Django 內置的User類提供了用戶密碼的存儲、驗證、修改等功能,能夠很方便你的給用戶提供密碼服務。算法

默認的Ddjango使用pbkdf2_sha256方式來存儲和管理用的密碼,固然是能夠自定義的。django

Django 經過PASSWORD_HASHERS 設置選擇要使用的算法。下面有一個列表,列出了Django 支持的哈希算法類。列表的第一個元素 (即settings.PASSWORD_HASHERS[0]) 會用於儲存密碼, 全部其它元素都是用於驗證的哈希值,它們能夠用於檢查現有的密碼。意思是若是你打算使用不一樣的算法,你須要修改PASSWORD_HASHERS,來將你最喜歡的算法在列表中放在首位。函數

一個settings中的Password_hashers看起來是這樣的:hash

PASSWORD_HASHERS = (import

    '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',
)密碼

具體在Django中的用戶密碼生成、驗證的過程是怎麼樣的,能夠經過django.contrib.auth.hashers模塊中的幾個函數大致瞭解一下。經過對兩個函數的瞭解,徹底能夠脫離內置的User, 實現自定義的用戶表中使用django內置的密碼機制。im

首先導入word

from django.contrib.auth.hashers import make_password, check_passwordmake

經過函數名便可發現,主要有兩個函數,分別是建立密碼和驗證auth

用法

ps = "123456"

dj_ps = make_password(ps, None, 'pbkdf2_sha256')   #建立django密碼, 第二個參數爲None是每次產生的密碼都不用,第三個參數爲算法, 後面兩個參數能夠忽略

ps_bool = check_password(ps, dj_ps) # check_password 返回值爲一個Bool類型,驗證密碼的正確與否

相關文章
相關標籤/搜索