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 相关文章推荐
Django中使用group_by的方法
May 26 Python
Python实现矩阵加法和乘法的方法分析
Dec 19 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
Jul 13 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
用python打印菱形的实操方法和代码
Jun 25 Python
Python read函数按字节(字符)读取文件的实现
Jul 03 Python
Django 限制访问频率的思路详解
Dec 24 Python
对Tensorflow中Device实例的生成和管理详解
Feb 04 Python
Python日志logging模块功能与用法详解
Apr 09 Python
python 命令行传参方法总结
May 25 Python
python数据可视化JupyterLab实用扩展程序Mito
Nov 20 Python
Elasticsearch 批量操作
Apr 19 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 数组入门教程小结
2009/05/20 PHP
php实现mysql同步的实现方法
2009/10/21 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
js 函数的副作用分析
2011/08/23 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
python 切片和range()用法说明
2013/03/24 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
医学护理系毕业生求职信
2013/10/01 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android