Как генерировать хеши MD5, SHA-256 и другие

· 4 мин чтения

Хеширование конвертирует любой ввод — пароль, файл, сообщение — в строку фиксированной длины. Тот же ввод всегда производит тот же хеш, но малейшее изменение во вводе производит совершенно другой хеш. Это делает хеширование важным для проверки целостности, хранения паролей и цифровых подписей.

Как работает хеширование

Хеш-функция берёт ввод любого размера и производит вывод фиксированного размера:

Ввод Хеш SHA-256 (первые 16 символов)
hello 2cf24dba5fb0a30e...
Hello 185f8db32271fe25...
hello! ce06092fb948d9ff...

Заметьте, что один изменённый символ (h в нижнем регистре на H в верхнем) или добавленный полностью меняет хеш. Это называется лавинным эффектом.

Распространённые алгоритмы хеширования

Алгоритм Длина Статус Использовать для
MD5 32 символа Сломан (небезопасно) Устаревшие контрольные суммы, небезопасное использование
SHA-1 40 символов Сломан (небезопасно) Только устаревшие системы
SHA-256 64 символа Безопасно Целостность файлов, цифровые подписи
SHA-512 128 символов Безопасно Приложения с высокой безопасностью

SHA-256 — это текущий стандарт для большинства использований. MD5 и SHA-1 должны использоваться только для взаимодействия с устаревшими системами, требующими их.

Как сгенерировать хеш

  1. Выберите ваш алгоритм — выберите MD5, SHA-1, SHA-256, SHA-384 или SHA-512. Используйте SHA-256, если нет особой причины.
  2. Введите текст или импортируйте файл — введите или вставьте текст, или выберите файл для хеширования.
  3. Скопируйте хеш — результат — это шестнадцатеричная строка, пригодная для проверки, хранения или сравнения.

Практическое использование

Проверка целостности файла — скачайте файл и сравните его хеш с официально опубликованным. Если они совпадают, файл подлинный и не повреждён.

Хранение паролей — приложения хранят хеши паролей, а не сами пароли. Когда вы входите, ваш ввод хешируется и сравнивается с сохранённым хешем.

Дедупликация данных — хешируйте большие файлы, чтобы быстро определить, идентичны ли они, не сравнивая их побайтово.

HMAC для безопасности API — используйте HMAC (хеш с секретным ключом) для подписи API-запросов и обеспечения, что они не были изменены при передаче.

Советы

Часто задаваемые вопросы

В чём разница между MD5, SHA-1 и SHA-256?

MD5 производит 128-битный хеш (32 hex-символа), SHA-1 производит 160 бит (40 символов) и SHA-256 производит 256 бит (64 символа). MD5 и SHA-1 считаются криптографически сломанными. SHA-256 в настоящее время безопасен и рекомендуется для проверки целостности и безопасности.

Можно ли инвертировать хеш, чтобы найти исходные данные?

Нет. Хеш-функции односторонние по замыслу. Вы не можете математически инвертировать хеш в его ввод. Однако распространённые пароли могут быть найдены в предварительно вычисленных таблицах (радужных таблицах), отсюда важность соления паролей перед хешированием.

Что такое HMAC?

HMAC (Hash-based Message Authentication Code) комбинирует хеш-функцию с секретным ключом. Он проверяет как целостность, так и подлинность данных — доказывая, что они не были изменены и были произведены кем-то, знающим секретный ключ.

Отправляются ли мои данные на сервер?

Нет. Всё хеширование работает в вашем браузере с Web Crypto API. Ваши тексты и файлы никогда не покидают ваше устройство.