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冒泡排序注意要点实例详解
Sep 09 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
Python Flask-web表单使用详解
Nov 18 Python
python 在某.py文件中调用其他.py内的函数的方法
Jun 25 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
查看端口并杀进程python脚本代码
Dec 17 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
Python中使用ipython的详细教程
Jun 22 Python
python blinker 信号库
May 04 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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
php下使用SimpleXML 处理XML 文件
2010/02/27 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
php的debug相关函数用法示例
2016/07/11 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
python编程实现希尔排序
2017/04/13 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
30年同学聚会感言
2014/01/30 职场文书
医院保洁服务方案
2014/06/11 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL