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爬虫之cookie使用方法
Feb 17 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
Apr 02 Python
python调用OpenCV实现人脸识别功能
May 25 Python
python实现逆序输出一个数字的示例讲解
Jun 25 Python
解决python3读取Python2存储的pickle文件问题
Oct 25 Python
对Python信号处理模块signal详解
Jan 09 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
Python实现手势识别
Oct 21 Python
Python访问Redis的详细操作
Jun 26 Python
Python中Selenium对Cookie的操作方法
Jul 09 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实时显示输出
2008/10/02 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
js身份证判断方法支持15位和18位
2014/03/18 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
vue.js中$set与数组更新方法
2018/03/08 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
python实现矩阵乘法的方法
2015/06/28 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
window下eclipse安装python插件教程
2017/04/24 Python
python字典操作实例详解
2017/11/16 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
爬山的活动方案
2014/08/16 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
单位考核聘任报告
2015/03/02 职场文书
郭明义观后感
2015/06/08 职场文书
2019各种保证书范文
2019/06/24 职场文书
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏