Django自带的加密算法及加密模块详解


Posted in Python onDecember 03, 2019

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自带的加密算法及加密模块详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python正常时间和unix时间戳相互转换的方法
Apr 23 Python
Python处理文本文件中控制字符的方法
Feb 07 Python
教你学会使用Python正则表达式
Sep 07 Python
让Django支持Sql Server作后端数据库的方法
May 29 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
Python交互式图形编程的实现
Jul 25 Python
python 利用pyttsx3文字转语音过程详解
Sep 25 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 Python
python中的列表和元组区别分析
Dec 30 Python
python如何正确使用yield
May 21 Python
python解析照片拍摄时间进行图片整理
Jul 23 Python
python Opencv计算图像相似度过程解析
Dec 03 #Python
django 中使用DateTime常用的时间查询方式
Dec 03 #Python
在django中自定义字段Field详解
Dec 03 #Python
python 实现单通道转3通道
Dec 03 #Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 #Python
python3实现elasticsearch批量更新数据
Dec 03 #Python
python实现从wind导入数据
Dec 03 #Python
You might like
php实现高效获取图片尺寸的方法
2014/12/12 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
Form表单上传文件(type="file")的使用
2017/08/03 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
浅谈React高阶组件
2018/03/28 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
Python中使用Inotify监控文件实例
2015/02/14 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
python中cPickle类使用方法详解
2018/08/27 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
Java如何格式化日期
2012/08/07 面试题
化学专业毕业生自荐信
2013/11/15 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
实验室安全管理制度
2015/08/05 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB