Шифрование паролей маскирует пароли пользователей, поэтому их трудно угадать или расшифровать. Это важный шаг в разработке безопасного программного обеспечения для пользователей. Независимо от того, создаете ли вы его с помощью Flask или другого легкого Python Framework, вы не можете игнорировать этот шаг. Вот где на помощь приходит bcrypt.
Мы покажем вам, как использовать bcrypt для хеширования пароля в Python.
Как работает bcrypt
Bcrypt - это не зависящая от языка библиотека хеширования, которая предлагает уникальное шифрование паролей. При шифровании вашей строки он по умолчанию генерирует дополнительные случайные символы (соль), чтобы повысить безопасность вашего пароля.
При желании вы также можете указать количество дополнительных символов, которые вы хотите добавить во входящую строку.
Библиотека bcrypt не читает необработанные строки - только байтовый код. Итак, для начала вы сначала закодируете входящую строку пароля, прежде чем передавать ее в bcrypt для шифрования.
Кодирование - это не то же самое, что шифрование. Это только гарантирует, что строка станет машиночитаемой до того, как алгоритм шифрования сможет ее замаскировать.
Шифрование пароля в Python с помощью bcrypt
Шифрование паролей bcrypt легко с Python. Мы сосредоточимся на том, как это сделать без использования фреймворка. Но не беспокойтесь, он следует тому же процессу во фреймворках, если вы знаете, как хранить вводимые пользователем данные и читать их из базы данных.
Установить и настроить bcrypt
Если вы еще этого не сделали, активировать виртуальную среду Python в корне вашего проекта. Затем установите bcrypt, используя пип:
pip install bcrpyt
Начать шифрование паролей
После установки давайте посмотрим, как зашифровать строку с помощью bcrypt:
# Импортировать bcrypt:
импортировать bcrypt
пароль = "mypasswordstring"
# Закодировать пароль в читаемый байт-код utf-8:
пароль = пароль.encode ('utf-8')
# Зашешируйте экодированный пароль и сгенерируйте соль:
hashedPassword = bcrypt.hashpw (пароль, bcrypt.gensalt ())
печать (hashedPassword)
Когда ты запустить код Python выше, он печатает зашифрованную байтовую строку. Однако вывод меняется каждый раз, когда вы выполняете сценарий. Таким образом bcrypt обеспечивает каждому пользователю уникальный зашифрованный пароль.
Кстати, это для шифрования паролей.
Как сравнивать и подтверждать пароли с помощью bcrypt
Что, если вы хотите сохранить хешированный пароль и позже подтвердить, что он соответствует паролю, указанному пользователем во время аутентификации?
Это просто. Вам нужно только сравнить аутентификационный пароль с паролем, хранящимся в базе данных (или в этом случае в памяти).
А поскольку bcrypt считывает только байтовые строки, вам также необходимо закодировать аутентификационный пароль, прежде чем сравнивать его с паролем в базе данных. По сути, вы перепроверете закодированный вход аутентификации с закодированным хешированным паролем, уже хранящимся в вашей базе данных.
Используя фиктивные входные данные Python, давайте посмотрим, как это работает на практике:
импортировать bcrypt
# сохранить свой пароль:
пароль = str (input ("введите пароль:"))
# Закодировать сохраненный пароль:
пароль = пароль.encode ('utf-8')
# Зашифровать сохраненный пароль:
hashed = bcrypt.hashpw (пароль, bcrypt.gensalt (10))
# Создайте поле ввода аутентифицирующего пароля, чтобы проверить, вводит ли пользователь правильный пароль:
check = str (input ("проверить пароль:"))
# Также закодируйте аутентификационный пароль:
check = check.encode ('utf-8')
# Используйте условия для сравнения аутентификационного пароля с сохраненным:
если bcrypt.checkpw (проверить, хешировать):
print ("успешный вход в систему")
еще:
print («неверный пароль»)
Приведенный выше код просит вас ввести новый пароль при его выполнении. Python хранит это в памяти. Затем вы предоставите тот же пароль (известный только вам) в поле аутентификации.
Python выводит сообщение об успешном выполнении, если сравниваемый пароль совпадает с ранее сохраненным зашифрованным. В противном случае он выводит сообщение об ошибке, заключенное в еще утверждение:
Вся концепция такая же, как хранение пароля в базе данных во время регистрации и предоставление его позже во время аутентификации.
Масштабирование шифрования с помощью bcrypt
Хотя мы только продемонстрировали, как работает bcrypt, сохраняя зашифрованные пароли в простой короткой памяти Python, в конечном итоге он используется в реальных пользовательских приложениях.
Тем не менее, в этом руководстве показаны основные способы структурирования кода для достижения этой цели даже в реальных сценариях. Например, если вы используете Flask, вы можете заменить вводимые данные отдельными веб-формами для обслуживания полей регистрации и аутентификации. И, конечно же, вы будете хранить зашифрованные пароли в реальной базе данных и читать из нее при сравнении паролей.
Все говорят о шифровании, но заблудились или запутались? Вот несколько ключевых терминов шифрования, которые вам необходимо знать.
Читать далее
- Программирование
- Python
- Программирование
- Безопасность
Идову увлечен всем, что связано с умными технологиями и производительностью. В свободное время он играет с кодированием и переключается на шахматную доску, когда ему скучно, но он также любит время от времени отвлекаться от рутины. Его страсть показывать людям современные технологии побуждает его писать больше.
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!
Нажмите здесь, чтобы подписаться