Во время аутентификации пользователей и иной работы с учетными данными, а именно логинами и паролями, ключами никогда не храните их в виде открытого текста, а так же непосредственно в коде программы. Это небезопасно и может привести к утечек пользовательских данных. Злоумышлении смогут получить доступ к аккаунту.
Распространенный метод, используемый в практике, заключается в хешировании учетных данных. Рекомендуется использовать при хешировании соль и хранить ее с хешированным паролем.
Соль это случайная строка данных, хэшированная вместе с паролем, для сохранения уникальности результата хеширования.
Популярные хеш-функции Python:
- MD5;
- SHA.
MD5 алгоритм производит хеш со значением в 128 битов. Широко используется для проверки целостности данных. Не подходит для использования в иных областях по причине уязвимости.
SHA группа алгоритмов, что были разработаны NSA Соединенных Штатов. Они являются частью Федерального стандарта обработки информации США. Эти алгоритмы широко используются в нескольких криптографических приложениях. Длина сообщения варьируется от 160 до 512 бит.
Модуль hashlib, включенный в стандартную библиотеку Python, представляет собой интерфейс для самых популярных алгоритмов хеширования.
Импортируем модуль hashlib и выведем на печать все доступные алгоритмы хеширования. Метод algorithms_available создает список всех алгоритмов, доступных в системе, а метод algorithms_guaranteed перечисляет только алгоритмы модуля
Пример хеширования с помощью алгоритма MD5. Код ниже принимает строку "Example of hashing by MD5 algorithm" и выводит дайджест хеш данной строки. Стоит заметить, что "b" перед началом строки, осуществляет конвертацию строки в байты, оттого, что функция хеширования принимает только последовательность байтов в качестве параметра.
Для хеширования кириллицы и латинских символов необходимо подключить поддержку UTF-8.
Пример хеширования алгоритмом SHA1.
Пример хеширования алгоритмом SHA256.
Рассмотрим рабочий пример хеширования паролей и их последующей проверки. При хешировании пароля будем использовать соль (случайно сгенерированный набор данных) добавленный к строке перед хешированием.
В этой статье мы рассмотрели основы хеширования учетных данных библиотекой hashlib, рассмотрели различные алгоритмы хеширования.
С уважением, Карян Армен.
Занимаюсь профессиональной разработкой прикладных программ на Python.
email SoftSAR@yandex.ru
Telegram @SoftSar_am