Django Rest:BaseUserManager的set_password()函数中使用的哈希

时间:2018-11-08 14:55:24

标签: django django-rest-framework

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

0 个答案:

没有答案