Как генерировать хеши MD5, SHA-256 и другие
Хеширование конвертирует любой ввод — пароль, файл, сообщение — в строку фиксированной длины. Тот же ввод всегда производит тот же хеш, но малейшее изменение во вводе производит совершенно другой хеш. Это делает хеширование важным для проверки целостности, хранения паролей и цифровых подписей.
Как работает хеширование
Хеш-функция берёт ввод любого размера и производит вывод фиксированного размера:
| Ввод | Хеш 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 должны использоваться только для взаимодействия с устаревшими системами, требующими их.
Как сгенерировать хеш
- Выберите ваш алгоритм — выберите MD5, SHA-1, SHA-256, SHA-384 или SHA-512. Используйте SHA-256, если нет особой причины.
- Введите текст или импортируйте файл — введите или вставьте текст, или выберите файл для хеширования.
- Скопируйте хеш — результат — это шестнадцатеричная строка, пригодная для проверки, хранения или сравнения.
Практическое использование
Проверка целостности файла — скачайте файл и сравните его хеш с официально опубликованным. Если они совпадают, файл подлинный и не повреждён.
Хранение паролей — приложения хранят хеши паролей, а не сами пароли. Когда вы входите, ваш ввод хешируется и сравнивается с сохранённым хешем.
Дедупликация данных — хешируйте большие файлы, чтобы быстро определить, идентичны ли они, не сравнивая их побайтово.
HMAC для безопасности API — используйте HMAC (хеш с секретным ключом) для подписи API-запросов и обеспечения, что они не были изменены при передаче.
Советы
- Используйте SHA-256 по умолчанию — он безопасен, широко поддерживается и является стандартной рекомендацией для новых проектов.
- Никогда не используйте MD5 для безопасности — MD5-коллизии (разные входы, производящие одинаковый хеш) могут быть сгенерированы за секунды. Он подходит для небезопасных контрольных сумм, но не для того, что важно для целостности.
- Солите ваши хеши паролей — добавление случайной соли к каждому паролю перед хешированием предотвращает атаки с радужными таблицами. Используйте bcrypt или Argon2 для хеширования паролей в продакшене.
- Хеширование файлов работает локально — файл обрабатывается в вашем браузере, поэтому даже большие файлы никогда не покидают ваше устройство.
Часто задаваемые вопросы
В чём разница между 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. Ваши тексты и файлы никогда не покидают ваше устройство.