Django自帶的加密演算法及加密模組詳解
阿新 • • 發佈:2020-01-09
Django 內建的User類提供了使用者密碼的儲存、驗證、修改等功能,可以很方便你的給使用者提供密碼服務。
預設的Ddjango使用pbkdf2_sha256方式來儲存和管理用的密碼,當然是可以自定義的。
Django 通過PASSWORD_HASHERS 設定選擇要使用的演算法。
下面有一個列表,列出了Django 支援的雜湊演算法類。列表的第一個元素 (即settings.PASSWORD_HASHERS[0]) 會用於儲存密碼, 所有其它元素都是用於驗證的雜湊值,它們可以用於檢查現有的密碼。意思是如果你打算使用不同的演算法,你需要修改PASSWORD_HASHERS,來將你最喜歡的演算法在列表中放在首位。
一個settings中的Password_hashers看起來是這樣的:
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',)
具體在Django中的使用者密碼生成、驗證的過程是怎麼樣的,可以通過django.contrib.auth.hashers模組中的幾個函式大體瞭解一下。通過對兩個函式的瞭解,完全可以脫離內建的User, 實現自定義的使用者表中使用django內建的密碼機制。
首先匯入
from django.contrib.auth.hashers import make_password,check_password
通過函式名即可發現,主要有兩個函式,分別是建立密碼和驗證
用法
ps = "123456"
dj_ps = make_password(ps,None,'pbkdf2_sha256') #建立django密碼, 第二個引數為None是每次產生的密碼都不用,第三個引數為演算法, 後面兩個引數可以忽略
ps_bool = check_password(ps,dj_ps) # check_password 返回值為一個Bool型別,驗證密碼的正確與否
以上這篇Django自帶的加密演算法及加密模組詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。