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实现ftp客户端示例分享
Feb 17 Python
ptyhon实现sitemap生成示例
Mar 30 Python
Python实现竖排打印传单手机号码易撕条
Mar 16 Python
在Python中处理日期和时间的基本知识点整理汇总
May 22 Python
教你学会使用Python正则表达式
Sep 07 Python
python创建列表和向列表添加元素的实现方法
Dec 25 Python
Python之pymysql的使用小结
Jul 01 Python
用Cython加速Python到“起飞”(推荐)
Aug 01 Python
django中使用POST方法获取POST数据
Aug 20 Python
Python:二维列表下标互换方式(矩阵转置)
Dec 02 Python
tensorflow实现测试时读取任意指定的check point的网络参数
Jan 21 Python
Pytorch转onnx、torchscript方式
May 25 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
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
Python socket 套接字实现通信详解
2019/08/27 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
使用python实现学生信息管理系统
2021/02/25 Python
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
经典安踏广告词
2014/03/21 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
社会实践先进工作者事迹材料
2014/05/06 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
导游词之南京中山陵
2019/11/27 职场文书
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python
总结高并发下Nginx性能如何优化
2021/11/01 Servers
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android
Golang实现可重入锁的示例代码
2022/05/25 Golang
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL