Django中密码的加密、验密、解密操作


Posted in Python onDecember 19, 2019

简单介绍一下今天使用到的django内置的加解密包:

from django.contrib.auth.hashers import make_password

如上图所示,django.contrib.auth.hashers即为django内置的加解密包。

小提示:

pycharm中的Python Console(如下图所示)可以执行django的语句,类似python解释器。

Django中密码的加密、验密、解密操作

1.加密

语句:make_password(原始密码[,固定字串][,加密方式])

return 加密后的密码

make_password(原始密码) 或 make_password(原始密码,None) 或 make_password(原始密码,''):每次产生的密码均不同。

>>> from django.contrib.auth.hashers import make_password
>>> make_password('a')
'pbkdf2_sha256$120000$m7gXe6yy0hJd$4ML8hHFQMrGyAXXkJpz9C4MOu8RJ6IvH19fpJaSVz0c='
>>> make_password('a')
'pbkdf2_sha256$120000$uD5csLIeBqWR$HvvTnZsUmATa+KBSCzRbRR5tYNaBab7VWpk2O4NfURU='
>>> make_password('a',None)
'pbkdf2_sha256$120000$SG5CBgULfUew$alE84q7NAzkraQ2Gr1J61pPU6gXLlvCwA2E5H3d75cQ='
>>> make_password('a',None)
'pbkdf2_sha256$120000$Kcq2i6cFokS0$tAaRf6CAFwaqmg9QDHFefTkzCusla2JqU+FKMkjiilk='
>>> make_password('a','')
'pbkdf2_sha256$120000$qBmkLhQTZX8B$pXZ3PZkiPH3fBGjUQt+SsGFpYhIn3BHgACmE5bDdTK0='
>>> make_password('a','')
'pbkdf2_sha256$120000$QR3QAh7MCF15$nAQVTKHEFks92NPmLY2S3odHeT7PoaFoIL7/etKs08w='

make_password(原始密码,固定字串):产生相同密码。
>>> from django.contrib.auth.hashers import make_password
>>> make_password('a','a')
'pbkdf2_sha256$120000$a$l8oCmo99z83LSu7DX4AGnjHHpeVmecW3puc4ufA55mE='
>>> make_password('a','a')
'pbkdf2_sha256$120000$a$l8oCmo99z83LSu7DX4AGnjHHpeVmecW3puc4ufA55mE='
>>> make_password('a','abcd')
'pbkdf2_sha256$120000$abcd$JmTnyyEmsg4YsssiJU4yi0RDAvvJEnqjJOCTounGDc0='
>>> make_password('a','abcd')
'pbkdf2_sha256$120000$abcd$JmTnyyEmsg4YsssiJU4yi0RDAvvJEnqjJOCTounGDc0='

make_password(原始密码,固定字串,加密方式)
>>> from django.contrib.auth.hashers import make_password

>>> make_password('a','ab','pbkdf2_sha256')
'pbkdf2_sha256$120000$ab$KjztZyslBdOqErZyWGtDdB0FhGA/vx4CfL0dFDKbGzI='

使用示例:

from django.contrib.auth.hashers import make_password
class AddView(View):
  def get(self, request):
    return render(request, "user/add.html")
  def post(self, request):
    username = request.POST.get('username')
    password = request.POST.get('password')
        .......
    #密码加密
    password=make_password(password)

2.验证密码

语句:check_password (原始密码, 加密后的密码)

return True/False

当然也可以不需要加密,那么判断密码,则加密后的密码,直接用数据库中的原始密码。

另外一种验证登录密码的方式是authenticate(username=username, password=password),但这种方式的password必须是密文,不能是原始密码(明文)

3.无法解密

总结

以上所述是小编给大家介绍的Django中密码的加密、验密、解密操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python运行的17个时新手常见错误小结
Aug 07 Python
python 解析XML python模块xml.dom解析xml实例代码
Feb 07 Python
简单介绍Python中的len()函数的使用
Apr 07 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
Flask解决跨域的问题示例代码
Feb 12 Python
PyQt5实现五子棋游戏(人机对弈)
Mar 24 Python
Python实现字符串匹配的KMP算法
Apr 04 Python
Python一键安装全部依赖包的方法
Aug 12 Python
python使用 __init__初始化操作简单示例
Sep 26 Python
Windows下python3安装tkinter的问题及解决方法
Jan 06 Python
matplotlib更改窗口图标的方法示例
Feb 03 Python
pandas时间序列之pd.to_datetime()的实现
Jun 16 Python
利用OpenCV和Python实现查找图片差异
Dec 19 #Python
Python文本处理简单易懂方法解析
Dec 19 #Python
python类中super() 的使用解析
Dec 19 #Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 #Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 #Python
Python命令行click参数用法解析
Dec 19 #Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 #Python
You might like
Zend Guard一些常见问题解答
2008/09/11 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
JavaScript QueryString解析类代码
2010/01/17 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
js数组操作常用方法
2014/05/08 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
python文件的md5加密方法
2016/04/06 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
python人民币小写转大写辅助工具
2018/06/20 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
联想墨西哥官方网站:Lenovo墨西哥
2016/08/17 全球购物
巴黎一票通:The Paris Pass
2018/02/10 全球购物
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
SNIDEL官网:日本VIVI杂志人气少女第一品牌
2020/03/12 全球购物
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
春节联欢会策划方案
2014/05/16 职场文书
消防安全承诺书
2014/05/22 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
药房管理制度范本
2015/08/06 职场文书