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中的XML 工具
Apr 13 Python
Python的组合模式与责任链模式编程示例
Feb 02 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
Nov 19 Python
pytorch模型存储的2种实现方法
Feb 14 Python
python输出国际象棋棋盘的实例分享
Nov 26 Python
Python APScheduler执行使用方法详解
Dec 10 Python
详解用 python-docx 创建浮动图片
Jan 24 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 Python
matplotlib 范围选区(SpanSelector)的使用
Feb 24 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下使用SMTP发邮件的代码
2008/01/10 PHP
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
PHP安全性漫谈
2012/06/28 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
Python学习笔记_数据排序方法
2014/05/22 Python
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
Python爬取网页信息的示例
2020/09/24 Python
在线服装零售商:SheIn
2016/07/22 全球购物
业务主管岗位职责
2013/11/20 职场文书
内勤主管岗位职责
2014/04/03 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
写景作文评语集锦
2014/12/25 职场文书
英文自荐信范文
2015/03/25 职场文书
经营场所使用证明
2015/06/19 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书