Ответ
Хеш-функция — это математическая функция, которая преобразует входные данные произвольного размера в выходную битовую строку фиксированного размера, называемую хешем (или хеш-суммой).
Этот процесс является односторонним и необратимым.
Ключевые свойства криптографических хеш-функций:
- Детерминированность: Для одних и тех же входных данных результат (хеш) всегда будет одинаковым.
- Фиксированный размер выхода: Длина хеша не зависит от размера входных данных. Например, SHA-256 всегда возвращает 256-битную строку.
- Эффективность вычисления: Хеш для любого сообщения должен вычисляться быстро.
- Сопротивление нахождению прообраза (Необратимость): Зная хеш
H(x), должно быть практически невозможно найти исходные данныеx. - Сопротивление коллизиям: Должно быть практически невозможно найти два разных набора входных данных
xиy, для которых хешиH(x)иH(y)совпадают.
Пример использования в Python (алгоритм SHA-256):
import hashlib
# Входные данные должны быть в виде байтов, поэтому используем .encode()
data = "Hello, World!".encode('utf-8')
# Создаем объект хеш-функции SHA-256
hash_object = hashlib.sha256(data)
# Получаем хеш в виде шестнадцатеричной строки
hex_digest = hash_object.hexdigest()
print(f"Исходные данные: {data.decode()}")
print(f"SHA-256 хеш: {hex_digest}")
# Вывод: SHA-256 хеш: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
Области применения:
- Хранение паролей: Хранятся не сами пароли, а их хеши (часто с "солью").
- Проверка целостности данных: Сравнивая хеш файла до и после передачи, можно убедиться, что файл не был изменен.
- Структуры данных: В хеш-таблицах (например,
dictв Python) для быстрого поиска данных. - Блокчейн и криптовалюты: Для связывания блоков и обеспечения неизменности транзакций.