让我们使用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='

以上就是

请参考以下内容。

 

bannerAds