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 list中append()与extend()用法分享
Mar 24 Python
用Python编写web API的教程
Apr 30 Python
Python实现随机选择元素功能
Sep 14 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
和孩子一起学习python之变量命名规则
May 27 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
python 视频逐帧保存为图片的完整实例
Dec 10 Python
python mysql 字段与关键字冲突的解决方式
Mar 02 Python
Python任务调度模块APScheduler使用
Apr 15 Python
Python加速程序运行的方法
Jul 29 Python
python数据分析之用sklearn预测糖尿病
Apr 22 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Apr 04 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 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
深入分析php中接口与抽象类的区别
2013/06/08 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
Python函数的周期性执行实现方法
2016/08/13 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
Python 处理数据的实例详解
2017/08/10 Python
python中通过预先编译正则表达式提高效率
2017/09/25 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
Python 从相对路径下import的方法
2018/12/04 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
python文件和文件夹复制函数
2020/02/07 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
django form和field具体方法和属性说明
2020/07/09 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
财务会计毕业生自荐信
2013/11/02 职场文书
浅谈redis缓存在项目中的使用
2021/05/20 Redis
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers
使用Apache Camel表达REST服务的方法
2022/06/10 Servers