Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将哈希密码从flask导入django_Python_Django - Fatal编程技术网

Python 将哈希密码从flask导入django

Python 将哈希密码从flask导入django,python,django,Python,Django,我必须将我的flask用户迁移到django。在flask中,我使用werkzeug库生成了密码,如: generate_password_hash(value, method='sha256') 在django导入中,我保存了密码: u.password = hashed_pw 现在,密码位于数据库中,如下所示: 'sha256$VSvtvATP$2c87cf...' 现在django无法验证我的密码。如何转换密码以便django能够处理它?django默认使用不同的密码哈希算法,即带有

我必须将我的flask用户迁移到django。在flask中,我使用werkzeug库生成了密码,如:

generate_password_hash(value, method='sha256')
在django导入中,我保存了密码:

u.password = hashed_pw
现在,密码位于数据库中,如下所示:

'sha256$VSvtvATP$2c87cf...'

现在django无法验证我的密码。如何转换密码以便django能够处理它?

django默认使用不同的密码哈希算法,即带有SHA-256的PBKDF2。将现有散列移到Django的唯一方法是告诉它使用不同的散列器。普通的SHA-256哈希程序不是内置的,所以您必须这样做


不过,我会考虑不这样做,并为您现有的用户提供迁移路径,因为PBKDF2-SAH256被认为更安全:


将这些散列存储在用户的另一个字段中,并在首次登录时提示他们更改密码(然后扔掉旧散列,只保存以Django方式散列的密码)。您甚至可以对您的用户透明地执行此操作(即,在第一次登录时,在检查哈希与Flask中的旧哈希匹配后,基于相同的密码(此时您拥有的密码)生成新哈希)然后存储它,然后扔掉旧的散列。

或者以一种粗鲁的方式,要求每个人重置密码。您将如何执行此操作?您首先需要验证用户是否拥有正确的密码,然后才允许他们更改密码。您至少必须通过邮件执行此操作。上述解决方案不需要重置密码。它甚至不需要需要强制用户更改密码。在用户更改密码之前,它可以愉快地使用旧哈希运行。但在某种程度上推动用户可能会更好。