如何在没有Django的情况下验证Django创建的密码(make_password)

2024-09-30 04:38:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用了Django并用make_passwordcheck_password处理了密码

但是,我需要将框架更改为fastapi

使用fastapi,我需要验证Django创建的密码,因为我应该使用与数据相同的数据库

如何以与Django兼容的方式处理密码

数据库中存储的密码格式如下'pbkdf2_sha256$100000$Dl6Atsc1xX0A$0QFvZLpKdcvcmCNixVCdEA5gJ67yef/gkgaCKTYzoo4='


Tags: 数据django框架数据库密码makecheck格式
2条回答

我发现passlib支持Django兼容的方式

from django.contrib.auth.hashers import make_password
from passlib.handlers.django import django_pbkdf2_sha256

password = 'testpassword123'
django_hash = make_password(password)   
is_verified = django_pbkdf2_sha256.verify(password, django_hash)

if is_verified:
  print('Correct!!')

本文档介绍Django如何存储密码:

https://docs.djangoproject.com/en/2.2/topics/auth/passwords/

我使用Node.js后端执行类似于您所说的操作。您可以对$字符进行拆分,以获得验证密码所需的部分。以下是我所做工作的一个片段:

const [, iterations, salt,] = hash.split('$');
const algorithm = 'pbkdf2_sha256';
salt = (salt === '') ? makeSalt() : salt;
const key = crypto.pbkdf2Sync(password, salt, iterations, 32, 'sha256');
const rtnval = algorithm + '$' + iterations + '$' + salt + '$' + key.toString('base64');

这将为您提供一些可用于匹配给定用户的数据库条目的内容

相关问题 更多 >

    热门问题