Python 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))

我需要用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))
    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字符串。