【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参数引入示例如下:
相关推荐
云和数据.ChenGuang21 分钟前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys1 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi1 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据2 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi3 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀3 小时前
Redis梳理
数据库·redis·缓存
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天3 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺4 小时前
分布式系统架构:服务容错
数据库·架构
独行soc5 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘