Таким образом, вор не сможет использовать этот пароль в другой системе (поскольку многие пользователи везде используют один и тот же пароль, это было бы опасно).
## Установка `pwdlib`
## Установка `passlib`
pwdlib - это отличный пакет Python для работы с хэшами паролей, пришедший на замену passlib.
PassLib - это отличный пакет Python для работы с хэшами паролей.
Он поддерживает множество безопасных алгоритмов хеширования и утилит для работы с ними.
Рекомендуемый алгоритм - "Argon2".
Рекомендуемый алгоритм - "Bcrypt".
Убедитесь, что вы создали и активировали виртуальное окружение, и затем установите pwdlib вместе с Argon2:
Убедитесь, что вы создали и активировали виртуальное окружение, и затем установите PassLib вместе с Bcrypt:
<divclass="termy">
```console
$ pip install "pwdlib[argon2]"
$ pip install "passlib[bcrypt]"
---> 100%
```
@ -83,7 +83,7 @@ $ pip install "pwdlib[argon2]"
</div>
/// tip | Подсказка
С помощью `pwdlib` можно даже настроить его на чтение паролей, созданных **Django**, плагином безопасности **Flask** или многими другими библиотеками.
С помощью `passlib` можно даже настроить его на чтение паролей, созданных **Django**, плагином безопасности **Flask** или многими другими библиотеками.
Таким образом, вы сможете, например, совместно использовать одни и те же данные из приложения Django в базе данных с приложением FastAPI. Или постепенно мигрировать Django-приложение, используя ту же базу данных.
@ -92,14 +92,14 @@ $ pip install "pwdlib[argon2]"
## Хеширование и проверка паролей
Импортируйте необходимые инструменты из `pwdlib`.
Импортируйте необходимые инструменты из `passlib`.
Создайте экземпляр `PasswordHash` с рекомендованными настройками — он будет использоваться для хэширования и проверки паролей.
Создайте "контекст" PassLib. Именно он будет использоваться для хэширования и проверки паролей.
/// tip | Подсказка
pwdlib также имеет функциональность для использования алгоритма хэширования bcrypt, но не поддерживает старые алгоритмы — для работы с устаревшими хэшами рекомендуется использовать библиотеку passlib.
Контекст PassLib также имеет функциональность для использования различных алгоритмов хеширования, в том числе и устаревших, только для возможности их проверки и т.д.
Например, вы можете использовать его для чтения и проверки паролей, сгенерированных другой системой (например, Django), но хэшировать все новые пароли другим алгоритмом, например Argon2 или Bcrypt.
Например, вы можете использовать его для чтения и проверки паролей, сгенерированных другой системой (например, Django), но хэшировать все новые пароли другим алгоритмом, например Bcrypt.
И при этом быть совместимым со всеми этими системами.
///
@ -113,7 +113,7 @@ pwdlib также имеет функциональность для испол
Если проверить новую (фальшивую) базу данных `fake_users_db`, то можно увидеть, как теперь выглядит хэшированный пароль: `"$argon2id$v=19$m=65536,t=3,p=4$wagCPXjifgvUFBzq4hqe3w$CYaIb8sB+wtD+Vu/P4uod1+Qof8h+1g7bbDlBID48Rc"`.
Если проверить новую (фальшивую) базу данных `fake_users_db`, то можно увидеть, как теперь выглядит хэшированный пароль: `"$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW"`.