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编写一个简单的tic-tac-toe游戏的教程
Apr 16 Python
用Python的Django框架来制作一个RSS阅读器
Jul 22 Python
Python3使用Matplotlib 绘制精美的数学函数图形
Apr 11 Python
python 通过可变参数计算n个数的乘积方法
Jun 13 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
Aug 17 Python
django 数据库连接模块解析及简单长连接改造方法
Aug 29 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
Pytorch之卷积层的使用详解
Dec 31 Python
python redis存入字典序列化存储教程
Jul 16 Python
Python Request类源码实现方法及原理解析
Aug 17 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分页思路以及在ZF中的使用
2012/05/30 PHP
PHP合并两个数组的两种方式的异同
2012/09/14 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
PHP实现变色验证码实例
2014/01/06 PHP
Web跨浏览器进程通信(Web跨域)
2013/04/17 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
python根据url地址下载小文件的实例
2018/12/18 Python
python中实现控制小数点位数的方法
2019/01/24 Python
python求最大值最小值方法总结
2019/06/25 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
如何在django中运行scrapy框架
2020/04/22 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
化学专业毕业生自荐信
2013/11/15 职场文书
运动会广播稿200米
2014/01/27 职场文书
道路施工安全责任书
2014/07/24 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL