【Django】调用django的pbkdf2_sha256加密算法测试

基于django搭建的系统中,用到pbkdf2_sha256((Password-Based Key Derivation Function 2))加密算法,这里做些代码测试、总结。

  • PBKDF2简介
    • PBKDF2是一种基于密码的密钥派生函数,用于从用户提供的密码中生成加密密钥。
    • 全称是Password-Based Key Derivation Function 2,即基于密码的密钥派生函数2。
    • PBKDF2的主要目的是通过引入计算成本高的过程,使得从加密密钥中逆向推导出原始密码的难度大大增加,从而提高密码的安全性。

1.settings.py文件配置

python 复制代码
PASSWORD_HASHERS = (
    'django.contrib.auth.hashers.MD5PasswordHasher',
    '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.CryptPasswordHasher',
)

SECRET_KEY = '9z%v-4&h$86qo@o8%c7ep^it*5$%sscl5hd$emb070pgo=1$6#'

2.生成SECRET KEY

python 复制代码
from django.core.management.utils import get_random_secret_key
print( get_random_secret_key() )

# hgic$t55335b7(z9h(gs&1j2+ralahabczs-hq0h&49erm1^&k

3.pbkdf2_sha256测试

python 复制代码
from django.contrib.auth.hashers import make_password, check_password

import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'YouliTest.settings')
# django.setup()

# DJANGO_SETTINGS_MODULE=YouliTest.settings;

pwd = '123456789'
mkpwd = make_password(pwd, None, 'pbkdf2_sha256')  # 创建django密码,第三个参数为加密算法
print( 'make_password 测试: %s' % (mkpwd) )

mkpwd_bool = check_password(pwd, mkpwd)  # 返回的是一个bool类型的值,验证密码正确与否
print( 'check_password 测试: %r' % (mkpwd_bool) )

# make_password 测试: pbkdf2_sha256$100000$CsSTgYxLUkkr$jHH29Qq+QZ2JoTXBPKymXjYBQoXPWNO9V9ZAk+I9V3Q=
# check_password 测试: True
4.异常问题记录
python 复制代码
django.core.exceptions.ImproperlyConfigured: Requested setting PASSWORD_HASHERS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
  • 问题原因
    • settings.py文件未配置,配置好后需要在代码中引入或在运行参数中引入
    • Run/Debug Configurations参数引入示例如下:
相关推荐
段一凡-华北理工大学4 分钟前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh2 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z123456789863 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD3 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
Ai_easygo4 小时前
MCP 协议实战:用 Claude Desktop 连本地 SQLite,5 分钟搭一个能查数据的 AI 助手
jvm·人工智能·sqlite
TlSfoward4 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记4 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LabVIEW开发4 小时前
NI Package Manager安装LabVIEW时InternalServerError错误
网络·数据库·labview·labview知识·labview功能·labview程序
SelectDB5 小时前
PostgreSQL 实时同步到 Apache Doris:一站式 CDC 解决方案
数据库
欲速不达88205 小时前
Mysql并发DML锁等待的优化
数据库·mysql