Как хэшировать пароль с помощью bcrypt в django?
Я конвертирую php-сайт в django. Мне нужно подобрать пароль пользователя при входе в систему. Для хэширования пароля в cakephp
Security::setHash('blowfish');
Security::setCost(7);
Теперь мне нужно найти такую же функцию хэширования в django. Я просмотрел this и обнаружил, что они используют bcrypt для хэширования пароля в CakePhp. Я новичок в Django и не могу понять, как зашифровать пароль с помощью bcrypt в Django специально функцией setCost(), чтобы хэшированный пароль был таким же, как в CakePhp.
https://docs.djangoproject.com/en/3.2/topics/auth/passwords/#using-bcrypt-with-django
Использование bcrypt в Django
Установите библиотеку bcrypt. Это можно сделать, запустив
python -m pip install django[bcrypt]
, что эквивалентноpython -m pip install bcrypt
(вместе с любым требованием версии из setup.cfg Django).Измените
PASSWORD_HASHERS
, чтобы списокBCryptSHA256PasswordHasher
был первым. То есть, в вашем файле настроек вы поместите:PASSWORD_HASHERS = [ 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', 'django.contrib.auth.hashers.PBKDF2PasswordHasher', 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', 'django.contrib.auth.hashers.Argon2PasswordHasher', ]
Теперь, при использовании класса django User
, bcrypt будет использоваться для хэширования паролей при вызове функции User.set_password().