Django内置加密算法与hashers模块使用指南

白榆
白榆
发布时间:2026-10-13| 6人浏览过
原创

本文详解Django内置的密码加密机制,重点解析PASSWORD_HASHERS配置项如何指定存储与验证算法,并介绍django.contrib.auth.hashers模块中make_password和check_password函数的具体用法,帮助用户实现自定义用户表的密码安全存储与验证。

Django密码存储机制概述

Django内置的User类封装了用户密码的存储、校验及修改等核心功能,为开发者提供了便捷的密码管理服务。

Django默认采用pbkdf2_sha256算法来存储和管理用户密码,该机制支持自定义替换。

开发者可通过配置PASSWORD_HASHERS设置项来选择系统启用的具体哈希算法。

PASSWORD_HASHERS配置详解

Django支持多种哈希算法类,配置列表中的首个元素(即settings.PASSWORD_HASHERS[0])决定新密码的存储算法,其余元素则用于验证历史密码,确保不同算法生成的哈希值均可被正确校验。若需更换首选算法,必须调整PASSWORD_HASHERS列表,将目标算法置于首位。

在settings.py中,Password_hashers配置示例如下:


PASSWORD_HASHERS = (

 'django.contrib.auth.hashers.PBKDF2PasswordHasher',
 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
 'django.contrib.auth.hashers.BCryptPasswordHasher',
 'django.contrib.auth.hashers.SHA1PasswordHasher',
 'django.contrib.auth.hashers.MD5PasswordHasher',
 'django.contrib.auth.hashers.CryptPasswordHasher',
)

hashers模块核心函数应用

Django内部生成与验证用户密码的具体流程,可通过django.contrib.auth.hashers模块中的相关函数进行了解。掌握这两个核心函数后,即使不使用内置User模型,也能在自定义用户表中无缝集成Django的密码安全机制。

首先需要导入必要的模块:


from django.contrib.auth.hashers import make_password, check_password

从函数命名即可直观判断,该模块主要包含两个关键函数:一个用于创建密码哈希,另一个用于验证密码。

具体调用方法如下:


ps = "123456"

调用make_password(ps, None, 'pbkdf2_sha256')可生成Django格式的密码哈希。其中第二个参数设为None表示不添加随机盐值(每次生成的哈希值均不同),第三个参数指定使用的算法,后续参数可根据需要忽略。


ps_bool = check_password(ps, dj_ps) # check_password 返回值为一个Bool类型,验证密码的正确与否 

以上关于Django内置加密算法及加密模块的详解内容分享完毕,希望能为读者提供参考与支持。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。