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 相关文章推荐
pygame播放音乐的方法
May 19 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
python计算auc指标实例
Jul 13 Python
答题辅助python代码实现
Jan 16 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
python+mysql实现个人论文管理系统
Oct 25 Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 Python
python两个list[]相加的实现方法
Sep 23 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
Oct 15 Python
Python的轻量级ORM框架peewee使用教程
Feb 05 Python
python实现三阶魔方还原的示例代码
Apr 28 Python
pytorch训练神经网络爆内存的解决方案
May 22 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
react 国际化的实现代码示例
2018/09/14 Javascript
webpack优化的深入理解
2018/12/10 Javascript
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
Python中文件的读取和写入操作
2018/04/27 Python
wxPython多个窗口的基本结构
2019/11/19 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
pandas的相关系数与协方差实例
2019/12/27 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
使用python实现学生信息管理系统
2021/02/25 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
土木工程毕业生推荐信
2013/10/28 职场文书
高级电工工作职责
2013/11/21 职场文书
食堂员工工作职责
2013/12/18 职场文书
专升本个人自我评价
2013/12/22 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
实习单位推荐信
2015/03/27 职场文书
springboot+VUE实现登录注册
2021/05/27 Vue.js
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS