Курс Python → Хеширование паролей с солью

Хранение хеша и соли является важным шагом для обеспечения безопасности пользовательских паролей. Для этого можно использовать различные методы хранения данных, такие как JSON, SQL, CSV или даже простой текстовый файл. Главное, чтобы пароль не сохранялся нигде в открытом виде, поскольку это может привести к утечке конфиденциальной информации. Целью использования хеша и соли является именно защита пароля от доступа злоумышленников.

Если у вас есть ограничения по месту хранения данных и вам приходится использовать только одно хранилище, то можно объединить соль и пароль вместе и сохранить их в одном месте. При этом при чтении данных вы сможете разделить их, зная длину соли и ключа. Это позволит вам эффективно и безопасно хранить пароли пользователей, не ставя их под угрозу утечки информации.


import hashlib
import os

def hash_password(password, salt):
    return hashlib.sha256(salt.encode() + password.encode()).hexdigest()

password = "mysecretpassword"
salt = os.urandom(16).hex()
hashed_password = hash_password(password, salt)

print("Salt:", salt)
print("Hashed Password:", hashed_password)

Пример кода выше демонстрирует функцию hash_password, которая принимает пароль и соль, объединяет их и вычисляет хеш с использованием алгоритма SHA-256. Соль генерируется с помощью os.urandom(16).hex(), что обеспечивает уникальность и случайность значений. Таким образом, можно безопасно хранить пароли пользователей, обеспечивая им надежную защиту от злоумышленников.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Python defaultdict добавление ключа
  2. Создание итерируемых объектов
  3. Разделение функций на этапы
  4. Управление памятью в Python
  5. Тестирование с unittest
  6. Профилирование кода
  7. Создание и удаление объектов
  8. Получение локальных переменных в Python
  9. Функция eval() в Python
  10. Обработка ошибок ввода данных
  11. Транспонирование матрицы
  12. Ускорение кода с помощью векторизации
  13. Возврат нескольких значений из функции
  14. Удаление символов новой строки в Python.
  15. Встроенные функции Python
  16. Взаимодействие с sys
  17. Создание панели меню Tkinter
  18. Работа с контекстными переменными
  19. Названия переменных
  20. Копирование словарей и списков в Python
  21. Работа с коллекциями Python
  22. Импорт модулей в Python 3.12
  23. Проверка условий в Python
  24. Метод count() для списка
  25. Изменение списка срезами
  26. Оператор «not» в Python
  27. Поиск частых элементов в списке
  28. Работа с collections.Counter
  29. Функциональное программирование.
  30. Метод __ixor__ для побитового исключающего ИЛИ
  31. Объединение, распаковка и деструктуризация
  32. Объединение коллекций в Python
  33. Аннотации типов в Python
  34. Транспонирование 2D-массива с помощью zip
  35. Тип данных TypeVarTuple
  36. Метод Event.wait() в Python
  37. Отладка кода
  38. Защита данных в Python
  39. Сравнение строк в Python
  40. Создание GUI с Tkinter: Entry
  41. Проблема с изменяемыми аргументами
  42. Импорт классов из другого файла
  43. Работа с YAML в Python
  44. Библиотека funcy: удобные утилиты
  45. Работа со строками в Python.
  46. Работа с исключениями в Python

Marketello читают маркетологи из крутых компаний