Python Django使_密码太慢,无法通过编程方式创建大量用户
我需要用Django编程创建数百(可能数千)个用户。我使用的是类似于:Python Django使_密码太慢,无法通过编程方式创建大量用户,python,django,django-models,Python,Django,Django Models,我需要用Django编程创建数百(可能数千)个用户。我使用的是类似于: from django.contrib.auth.models import User from django.contrib.auth.hashers import make_password for username, email, pwd in big_user_list: m = User(username=username, email=email, password=make_password(pwd))
from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
for username, email, pwd in big_user_list:
m = User(username=username, email=email, password=make_password(pwd))
m.save()
这需要太长时间才能执行。我已经通过在没有密码的情况下运行上述脚本确认make_password是罪魁祸首
不管怎样,这个缓慢的问题还是存在的,我真的需要快速执行这个脚本。您可以使用
django.contrib.auth.hasher.MD5PasswordHasher
作为初始密码。根据,
默认情况下,Django使用带有SHA256哈希的PBKDF2算法
NIST推荐的密码拉伸机制。这应该是
对大多数用户来说足够了:它相当安全,需要大量
要中断的计算时间量。
[……]
Django通过咨询密码散列器来选择an算法
背景这是Django使用的哈希算法类的列表
安装支架此列表中的第一个条目(即,
设置。密码\u哈希器[0])将用于存储密码,以及所有
其他条目是有效的哈希器,可用于检查现有的哈希值
密码。[…]
密码\u哈希器的默认值为:
PASSWORD_HASHERS = (
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.BCryptPasswordHasher',
'django.contrib.auth.hashers.SHA1PasswordHasher',
'django.contrib.auth.hashers.MD5PasswordHasher',
'django.contrib.auth.hashers.CryptPasswordHasher'
)
因此,您希望保持默认值现在的状态,但在开始时使用较弱的哈希器;确保列表中存在MD5PasswordHasher
。然后使用
make_password(pwd, None, 'md5')
最初生成一个普通的salt MD5密码;如果初始密码足够随机,则这不会太弱。当用户更改密码时,他们的密码将使用更强大的算法进行加密。您可以将salt和您自己的哈希算法传递到
生成密码
。好主意!但前提是您给他们的初始密码确实是一个非常好的密码-例如,一个完全随机的12字符ASCII字符串。