Django密码系统实现过程详解


Posted in Python onJuly 19, 2019

一、Django密码存储和加密方式

#算法+迭代+盐+加密

<algorithm>$<iterations>$<salt>$<hash>

默认加密方式配置

#settings里的默认配置
PASSWORD_HASHERS = [
  'django.contrib.auth.hashers.PBKDF2PasswordHasher',
  'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
  'django.contrib.auth.hashers.Argon2PasswordHasher',
  'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
  'django.contrib.auth.hashers.BCryptPasswordHasher',
]

#PASSWORD_HASHERS[0]为正在使用的加密存储方式,其他为检验密码时,可以使用的方式

默认加密方式配置

所有支持的hasher

[
  'django.contrib.auth.hashers.PBKDF2PasswordHasher',
  'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
  'django.contrib.auth.hashers.Argon2PasswordHasher',
  'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
  'django.contrib.auth.hashers.BCryptPasswordHasher',
  'django.contrib.auth.hashers.SHA1PasswordHasher',
  'django.contrib.auth.hashers.MD5PasswordHasher',
  'django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher',
  'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',
  'django.contrib.auth.hashers.CryptPasswordHasher',
]

所有支持的hasher

二、手动校验密码

#和数据库的密码进行校验
check_password(password, encoded)

#手动生成加密的密码,如果password=None,则生成的密码永远无法被check_password()
make_password(password, salt=None, hasher='default')

#检查密码是否可被check_password()
is_password_usable(encoded_password)

三、密码格式验证

AUTH_PASSWORD_VALIDATORS = [

#检验和用户信息的相似度
  {
    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
  },

#校验密码最小长度
  {
    'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    'OPTIONS': {
      'min_length': 9,
    }
  },

#校验是否为过于简单(容易猜)密码
  {
    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
  },

#校验是否为纯数字
  {
    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
  },
]

四、自定义

  • 自定义hash算法
  • 对已有hash算法升级
  • 自定义密码格式验证

官方原文

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
Python使用ftplib实现简易FTP客户端的方法
Jun 03 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 Python
Flask 让jsonify返回的json串支持中文显示的方法
Mar 26 Python
python实现按长宽比缩放图片
Jun 07 Python
python二维列表一维列表的互相转换实例
Jul 02 Python
Python实现朴素贝叶斯分类器的方法详解
Jul 04 Python
python实现自动网页截图并裁剪图片
Jul 30 Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
python让函数不返回结果的方法
Jun 22 Python
Tensorflow实现酸奶销量预测分析
Jul 19 #Python
Python实现基于SVM的分类器的方法
Jul 19 #Python
Tensorflow模型实现预测或识别单张图片
Jul 19 #Python
python django下载大的csv文件实现方法分析
Jul 19 #Python
python使用flask与js进行前后台交互的例子
Jul 19 #Python
Django 模型类(models.py)的定义详解
Jul 19 #Python
Tensorflow实现神经网络拟合线性回归
Jul 19 #Python
You might like
php多文件上传下载示例分享
2014/02/20 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
php调用shell的方法
2014/11/05 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
能说明你的Javascript技术很烂的五个原因分析
2011/10/28 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
jcrop基本参数一览
2013/07/16 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
Python获取当前时间的方法
2014/01/14 Python
Python操作MySQL数据库9个实用实例
2015/12/11 Python
Python常用知识点汇总
2016/05/08 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
如何在python中写hive脚本
2019/11/08 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
大四自我鉴定
2014/02/08 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
校园演讲稿汇总
2014/05/21 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
应收账款管理制度
2015/08/06 职场文书
小学思品教学反思
2016/02/20 职场文书