Django自带的加密算法及加密模块
Django 內(nèi)置的User類提供了用戶密碼的存儲(chǔ)、驗(yàn)證、修改等功能,可以很方便你的給用戶提供密碼服務(wù)。
默認(rèn)的Ddjango使用pbkdf2_sha256方式來(lái)存儲(chǔ)和管理用的密碼,當(dāng)然是可以自定義的。
Django 通過(guò)PASSWORD_HASHERS 設(shè)置選擇要使用的算法。下面有一個(gè)列表,列出了Django 支持的哈希算法類。列表的第一個(gè)元素 (即settings.PASSWORD_HASHERS[0]) 會(huì)用于儲(chǔ)存密碼, 所有其它元素都是用于驗(yàn)證的哈希值,它們可以用于檢查現(xiàn)有的密碼。意思是如果你打算使用不同的算法,你需要修改PASSWORD_HASHERS,來(lái)將你最喜歡的算法在列表中放在首位。
一個(gè)settings中的Password_hashers看起來(lái)是這樣的:
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中的用戶密碼生成、驗(yàn)證的過(guò)程是怎么樣的,可以通過(guò)django.contrib.auth.hashers模塊中的幾個(gè)函數(shù)大體了解一下。通過(guò)對(duì)兩個(gè)函數(shù)的了解,完全可以脫離內(nèi)置的User, 實(shí)現(xiàn)自定義的用戶表中使用django內(nèi)置的密碼機(jī)制。
首先導(dǎo)入
from django.contrib.auth.hashers import make_password, check_password
通過(guò)函數(shù)名即可發(fā)現(xiàn),主要有兩個(gè)函數(shù),分別是創(chuàng)建密碼和驗(yàn)證
用法
ps = "123456"
dj_ps = make_password(ps, None,?'pbkdf2_sha256') ? #創(chuàng)建django密碼, 第二個(gè)參數(shù)為None是每次產(chǎn)生的密碼都不用,第三個(gè)參數(shù)為算法, 后面兩個(gè)參數(shù)可以忽略
ps_bool = check_password(ps, dj_ps) # check_password 返回值為一個(gè)Bool類型,驗(yàn)證密碼的正確與否
轉(zhuǎn)載于:https://www.cnblogs.com/wu-chao/p/9203935.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Django自带的加密算法及加密模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: RocketMQ之Pull消费者客户端启
- 下一篇: 通过工具SecureCRTPortabl