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 相关文章推荐
9种python web 程序的部署方式小结
Jun 30 Python
利用Python实现命令行版的火车票查看器
Aug 05 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
Apr 24 Python
python中subprocess批量执行linux命令
Apr 27 Python
详解如何用django实现redirect的几种方法总结
Nov 22 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
python+Django+pycharm+mysql 搭建首个web项目详解
Nov 29 Python
python相对企业语言优势在哪
Jun 12 Python
如何利用python进行时间序列分析
Aug 04 Python
python Paramiko使用示例
Sep 21 Python
如何编写python的daemon程序
Jan 07 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 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
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
dess中一个简单的多路委托的实现
2010/07/20 Javascript
JS.elementGetStyle(element, style)应用示例
2013/09/24 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
ES6 十大特性简介
2020/12/09 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
详解python上传文件和字符到PHP服务器
2017/11/24 Python
Python中一行和多行import模块问题
2018/04/01 Python
python 计算一个字符串中所有数字的和实例
2019/06/11 Python
python调用支付宝支付接口流程
2019/08/15 Python
python序列化与数据持久化实例详解
2019/12/20 Python
python实现吃苹果小游戏
2020/03/21 Python
Python colormap库的安装和使用详情
2020/10/06 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
大学生村官事迹材料
2014/01/21 职场文书
合作经营协议书
2014/04/17 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
党员自我评价范文2015
2015/03/03 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
商务信函英语问候语
2015/11/10 职场文书
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS