让我们使用Django和Python的secrets功能来自动生成和哈希密码
总结
在Django中,有一个名为make_random_password()的方法,但它已经不被推荐使用了,所以本次我们将使用官方推荐的secrets来生成密码。
此外,我们将使用Django中提供的功能进行哈希处理。
本次我们将使用Django的shell自动生成。我们要导入secrets和string,并执行方法。
poetry run python manage.py debugsqlshell
Python 3.11.2 (main, Mar 23 2023, 14:09:52) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import string
>>> import secrets
>>> alphabet = string.ascii_letters + string.digits + string.punctuation
>>> password = ''.join(secrets.choice(alphabet) for i in range(16))
>>> password
'i,Id1DtX$y5dNLo('
-
- ascii_letters
-
- digits
- punctuation
以下是其内容:
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
另外,您可以通过范围内的数字来调整密码的长度。
密码的哈希处理
在使用fixture时,使用Django的make_password方法来对密码进行哈希处理。将先前自动生成的密码放入make_password方法中。
>>> from django.contrib.auth.hashers import make_password
>>> make_password('!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~')
'pbkdf2_sha256$600000$QcH0cm6kihyD7LCU3vL0XG$bcnfLwTFLzewYJj14xIhErzDY82qK57KRLLu0I7p6Ew='
以上就是
请参考以下内容。