Django密碼系統(tǒng)實(shí)現(xiàn)過(guò)程詳解
一、Django密碼存儲(chǔ)和加密方式
#算法+迭代+鹽+加密
<algorithm>$<iterations>$<salt>$<hash>
默認(rèn)加密方式配置
#settings里的默認(rèn)配置 PASSWORD_HASHERS = [ 'django.contrib.auth.hashers.PBKDF2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.Argon2PasswordHasher', 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', 'django.contrib.auth.hashers.BCryptPasswordHasher', ] #PASSWORD_HASHERS[0]為正在使用的加密存儲(chǔ)方式,其他為檢驗(yàn)密碼時(shí),可以使用的方式 默認(rèn)加密方式配置
所有支持的hasher
[ 'django.contrib.auth.hashers.PBKDF2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.Argon2PasswordHasher', 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', 'django.contrib.auth.hashers.BCryptPasswordHasher', 'django.contrib.auth.hashers.SHA1PasswordHasher', 'django.contrib.auth.hashers.MD5PasswordHasher', 'django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher', 'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher', 'django.contrib.auth.hashers.CryptPasswordHasher', ] 所有支持的hasher
二、手動(dòng)校驗(yàn)密碼
#和數(shù)據(jù)庫(kù)的密碼進(jìn)行校驗(yàn) check_password(password, encoded) #手動(dòng)生成加密的密碼,如果password=None,則生成的密碼永遠(yuǎn)無(wú)法被check_password() make_password(password, salt=None, hasher='default') #檢查密碼是否可被check_password() is_password_usable(encoded_password)
三、密碼格式驗(yàn)證
AUTH_PASSWORD_VALIDATORS = [ #檢驗(yàn)和用戶信息的相似度 { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, #校驗(yàn)密碼最小長(zhǎng)度 { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 'OPTIONS': { 'min_length': 9, } }, #校驗(yàn)是否為過(guò)于簡(jiǎn)單(容易猜)密碼 { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, #校驗(yàn)是否為純數(shù)字 { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ]
四、自定義
- 自定義hash算法
- 對(duì)已有hash算法升級(jí)
- 自定義密碼格式驗(yàn)證
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
OpenCV+Imutils實(shí)現(xiàn)圖像的旋轉(zhuǎn)操作
imutils是在OPenCV基礎(chǔ)上的一個(gè)封裝,達(dá)到更為簡(jiǎn)結(jié)的調(diào)用OPenCV接口的目的,它可以輕松的實(shí)現(xiàn)圖像的平移,旋轉(zhuǎn),縮放,骨架化等一系列的操作。本文將用其實(shí)現(xiàn)圖像的旋轉(zhuǎn)操作,感興趣的可以學(xué)習(xí)一下2022-05-05Python根據(jù)輸入?yún)?shù)計(jì)算結(jié)果的實(shí)例方法
在本篇文章里小編個(gè)大家整理了一篇關(guān)于Python根據(jù)輸入?yún)?shù)計(jì)算結(jié)果的實(shí)例方法,有興趣的朋友們可以跟著學(xué)習(xí)參考下。2021-08-08pandas series序列轉(zhuǎn)化為星期幾的實(shí)例
下面小編就為大家分享一篇pandas series序列轉(zhuǎn)化為星期幾的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04放棄 Python 轉(zhuǎn)向 Go語(yǔ)言有人給出了 9 大理由
今年 Stream 團(tuán)隊(duì)的主要編程語(yǔ)言從 Python 轉(zhuǎn)向了 Go。本文解釋了其背后的九大原因以及如何做好這一轉(zhuǎn)換。下面小編給大家分享放棄 Python 轉(zhuǎn)向 Go語(yǔ)言有人給出了 9 大理由,一起看看吧2017-10-10python實(shí)現(xiàn)抽獎(jiǎng)小程序
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)抽獎(jiǎng)小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05Python數(shù)據(jù)結(jié)構(gòu)之二叉排序樹(shù)的定義、查找、插入、構(gòu)造、刪除
這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)結(jié)構(gòu)之二叉排序樹(shù)應(yīng)用的相關(guān)資料,二叉排序樹(shù)又稱為二叉查找樹(shù),它或者是一顆空樹(shù),或者是具有下列性質(zhì)的二叉樹(shù),需要的朋友可以參考下2021-06-06django 鏈接多個(gè)數(shù)據(jù)庫(kù) 并使用原生sql實(shí)現(xiàn)
這篇文章主要介紹了django 鏈接多個(gè)數(shù)據(jù)庫(kù) 并使用原生sql實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03python3 selenium自動(dòng)化 frame表單嵌套的切換方法
今天小編就為大家分享一篇python3 selenium自動(dòng)化 frame表單嵌套的切換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08