django - Django Rest:BaseUserManager 的 set_password() 函数中使用的散列
问题描述
我能知道 BaseUserManager 的 set_password() 中使用的散列算法吗 早期,我假设它必须创建与 make_password() 相同的输出(加密密码)。但两者都给出不同的输出
例如,
pbkdf2_sha256$120000$fpYd7FD1Cf3Z$sHRDYkxU6wST9i17AeVZeDPMGjwSpV4U1+8bxTC7B9U=
这是在我的应用程序中使用 set_password() 方法进行散列的(这是密码的加密形式,'password'
然后在python shell中,
>>>from django.contrib.auth.hashers import make_password
>>>make_password('password')
给出一个输出
'pbkdf2_sha256$120000$PCjS8f7J2zU8$7pj4Xp5R1h935z9U3UyRlcprJpQRgUID+I9UQp+q1w4='
我再次运行 make_password('password') 命令,有趣的是,这一次它也给出了不同的输出
'pbkdf2_sha256$120000$Jyhjh4luFw4F$wMKnv4BuNVw0NFpKgQjJNoyC6CuMqeXCo1neTEQ6S58='
所以,我想要的是我想在我的应用程序中添加一个更改密码功能。所以我希望我的用户在更改之前输入他当前的密码。由于它是使用 set_password() 进行散列的,我无法直接检查它。我认为唯一可能的方法是将输入的密码散列,然后与原始密码进行检查。任何人都可以帮我解决它吗?
解决方案
推荐阅读
- android - 无法通过 xml 或以编程方式在 Android Studio 中为 TextView 设置粗体样式
- javascript - 函数访问中的 Javascript 函数
- c# - 将 MS-Project mpp 文件导入 C# .Net Framework 并使用 MPXJ 将数据导出到 SQLite 数据库
- c# - 如何在 asp.net 核心 Web 应用程序中使用 System.Net.Dns.GetHostEntry(ip).HostName 获取用户名?
- python - Python:我收到一个错误,说列表索引超出范围,什么时候不是
- jestjs - 模拟 axios 全部/传播
- flutter - Flutter Firebase:无法更新数据库
- r - 根据前一行加速迭代计算值的循环并排除不符合 R 中标准的行
- javascript - 如何将 ajax response.responseText 设置为全局 JS 变量
- python - 熊猫日期时间转换