我可以知道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()对其进行了哈希处理,因此我无法直接对其进行检查。我认为唯一可行的方法是对输入的密码进行哈希处理,然后与原始密码进行检查。 有人可以帮我解决吗?