Вы никогда не должны хранить пароль в открытом виде при подтверждении пользователя или выполнении чего-либо подобного.
Поскольку многие люди используют один и тот же пароль, если злоумышленник обнаружит базу данных незашифрованных паролей, их можно легко использовать в сочетании с соответствующими электронными письмами для входа на связанный веб-сайт или учетную запись и даже использовать для попытки доступа к другим учетным записям.
Сегодня пароли часто хэшируются, когда пароль предоставляется. Рекомендуется хешировать с солью и хранить соль вместе с хешированным паролем.
Соление может показаться одним из шагов в рецепте оладий, но в криптографии это относится к добавлению случайных данных к входным данным хеш-функции, чтобы гарантировать, что хэш всегда будет давать уникальный результат, даже если входные данные идентичны.
В результате отличительный хэш, созданный путем добавления соли, может защитить нас от нескольких методов атак, включая атаки на хеш-таблицы, и в то же время задушить попытки словаря и грубой силы в автономном режиме.
Здесь с помощью фрагментов кода мы покажем, как использовать «bcrypt» для защиты ваших паролей.
Итак, что такое «bcrypt»?
Bcrypt — это библиотека хеширования, которая поддерживает несколько языков и обеспечивает специальное шифрование паролей. Чтобы повысить безопасность вашего пароля, он автоматически создает дополнительные случайные символы (соль) при шифровании вашей строки.
Вы также можете определить, сколько дополнительных символов вы хотите добавить к входящей строке.
Библиотека bcrypt читает только байтовый код, а не необработанные строки. Поэтому перед отправкой входящей строки пароля в bcrypt для шифрования ее необходимо сначала закодировать.
Шифрование и кодирование — не одно и то же. Он просто гарантирует, что строка может быть прочитана машиной до того, как она будет скрыта методом шифрования.
Использование bcrypt для шифрования пароля в Python
Python упрощает шифрование паролей bcrypt. Мы сконцентрируемся на том, чтобы сделать это без помощи фреймворка. Но не беспокойтесь, если вы понимаете, как сохранять вводимые пользователем данные и считывать их из базы данных, в фреймворках процедура такая же.
Установка
Вам нужно только настроить виртуальную среду Python, а затем использовать IDE, например PyCharm. Сначала необходимо установить библиотеку:
Шифрование пароля
Давайте посмотрим, как использовать bcrypt для шифрования текста после его установки:
Вышеупомянутый код Python выполняет и выводит зашифрованную строку байтов. Но каждый раз, когда вы запускаете скрипт, результат разный. Bcrypt использует этот метод, чтобы убедиться, что у каждого пользователя есть специально зашифрованный пароль.
Это, кстати, для шифрования паролей.
Сравнение и подтверждение паролей с помощью Bcrypt
Что произойдет, если вы захотите сохранить хешированный пароль и позже проверить, совпадает ли он с паролем, который пользователь отправил для аутентификации?
Это просто. Только пароль аутентификации должен сравниваться с записью в базе данных (или в памяти в этом случае).
Пароль аутентификации также должен быть закодирован перед сравнением с паролем в базе данных, потому что bcrypt может читать только строки байтов. По сути, вы сравните закодированный ввод аутентификации с закодированным хешированным паролем, который у вас есть в настоящее время в вашей базе данных.
Давайте проверим это, используя фиктивные входные данные Python:
После запуска вышеупомянутого кода вам будет предложено ввести новый пароль. Это сохраняется в памяти Python. В разделе аутентификации вы затем введете тот же пароль, который является вашим личным.
Если пароль сравнивается с тем, который ранее был зашифрован и сохранен, совпадает, Python выдает сообщение об успешном завершении.
Если нет, распечатывается сообщение об ошибке, а затем добавляется предложение else.
Основная идея идентична регистрации, а затем вводу пароля в базу данных для аутентификации.
Заключение
Несмотря на то, что мы просто использовали зашифрованные пароли, чтобы показать, как bcrypt работает в простой короткой памяти Python, его фактическое применение лежит в пользовательских приложениях.
Тем не менее, в этой статье демонстрируются основные методы организации кода для достижения этой цели даже в реальных условиях.
Например, если вы используете Flask, вы можете предоставить поля регистрации и аутентификации через отдельные веб-формы вместо входных данных.
Конечно, при сравнении паролей вы будете считывать данные из базы данных, содержащей зашифрованные пароли, хранящиеся в реальном мире.
Йона Нитч
Спасибо за это простое и простое объяснение,
Это мне очень помогло в моем текущем проекте.
Я думаю, что очень хорошо, что пример кода ограничен минимумом и не перегружен, как многие другие объяснения.
С наилучшими пожеланиями