Как пользоваться генератором хешей
- Введите или вставьте текст, для которого нужно получить хеш.
- Дайджесты MD5, SHA-1, SHA-256, SHA-384 и SHA-512 вычисляются по мере ввода и показываются в шестнадцатеричном виде.
- Чтобы проверить значение, вставьте ожидаемый хеш в поле сравнения; инструмент сообщит, совпадает ли он.
Хеши вычисляются в вашем браузере с помощью Web Crypto API и JavaScript; введённые вами данные никогда не загружаются и не сохраняются.
Что такое криптографический хеш?
Хеш-функция превращает входные данные любой длины в «отпечаток» фиксированной длины, который называется дайджестом. Хорошая криптографическая хеш-функция обладает такими свойствами:
- Детерминированность: одни и те же входные данные всегда дают один и тот же дайджест.
- Односторонность: восстановить входные данные по дайджесту практически невозможно.
- Стойкость к коллизиям: найти два разных входа с одинаковым дайджестом практически невозможно.
- Чувствительность: изменение одного бита входных данных меняет примерно половину битов результата.
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
SHA-256("hello\n")= 5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03
Как выбрать алгоритм
| Алгоритм | Размер дайджеста | Статус |
|---|---|---|
| MD5 | 128 бит | Взломан: коллизии можно быстро создавать на обычном оборудовании. Подходит только для контрольных сумм, не связанных с безопасностью. |
| SHA-1 | 160 бит | Взломан в части стойкости к коллизиям: практические коллизии были публично продемонстрированы. Постепенно выводится из использования. |
| SHA-256 | 256 бит | Надёжен и является самым распространённым современным выбором. |
| SHA-384 / SHA-512 | 384 / 512 бит | Надёжны; SHA-512 может работать быстрее SHA-256 на 64-битных процессорах. |
Для всего, что связано с безопасностью (подписи, сертификаты, целостность файлов, скачанных с недоверенных зеркал), используйте SHA-256 или более стойкий алгоритм. MD5 и SHA-1 остаются приемлемыми только для обнаружения случайных повреждений, когда никто не пытается подделать совпадение.
Типичные ошибки
Хеширование — это не шифрование
Шифрование обратимо при наличии ключа; хеширование необратимо вовсе. «Расшифровать» хеш нельзя. Короткие или распространённые входные данные всё же можно найти перебором: злоумышленник просто хеширует варианты, пока один не совпадёт, поэтому и существуют таблицы поиска по MD5 для распространённых слов.
Никогда не храните пароли с помощью обычного быстрого хеша
MD5, SHA-1 и даже SHA-256 создавались быстрыми, и это позволяет злоумышленникам проверять огромное количество вариантов пароля в секунду на GPU. Храните пароли с помощью специальной, намеренно медленной функции хеширования паролей с солью: Argon2id, scrypt или bcrypt. Они добавляют уникальную соль для каждого пароля и настраиваемый параметр трудоёмкости.
# Не делайте так
stored = sha256(password)
# Делайте так (Python, argon2-cffi)
from argon2 import PasswordHasher
stored = PasswordHasher().hash(password)
Невидимые различия во входных данных
Завершающий перевод строки, окончание строки Windows (\r\n) или другая нормализация Unicode дают совершенно другой хеш. Команда echo hello | sha256sum хеширует hello\n; чтобы получить результат, приведённый выше, используйте printf 'hello' или echo -n. Этот инструмент хеширует байты UTF-8 ровно того, что вы ввели.
Проверка контрольных сумм файлов
Для скачиваемых программ часто публикуют контрольную сумму SHA-256. Вычислите хеш скачанного файла и сравните его с опубликованным значением:
| Система | Команда |
|---|---|
| Linux | sha256sum file.iso |
| macOS | shasum -a 256 file.iso |
| Windows PowerShell | Get-FileHash file.iso -Algorithm SHA256 |
| Windows cmd | certutil -hashfile file.iso SHA256 |
В Linux команда sha256sum -c SHA256SUMS проверяет все файлы, перечисленные в файле контрольных сумм. Контрольная сумма доказывает, что файл совпадает с тем, который хешировал издатель; подлинность она доказывает, только если сама сумма получена из надёжного источника, например из подписанного файла или со страницы по HTTPS. Сертификат сайта можно проверить с помощью проверки SSL-сертификата.
2CF24DBA... и 2cf24dba... — это один и тот же хеш. Некоторые инструменты выдают Base64 вместо шестнадцатеричной записи; перед сравнением преобразуйте его с помощью кодирования и декодирования Base64.Часто задаваемые вопросы
Можно ли обратить или расшифровать хеш?
Нет. Хеш-функции по замыслу отбрасывают информацию. Короткие или распространённые входные данные можно восстановить перебором и сравнением, но не обращением функции.
Можно ли ещё пользоваться MD5?
Для безопасности — нет. Коллизии создаются тривиально, поэтому MD5 нельзя использовать для подписей, сертификатов или паролей. Он по-прежнему годится для обнаружения случайного повреждения файлов или в качестве ключа кеша.
Какой хеш использовать для паролей?
Ни один из тех, что есть на этой странице. Используйте Argon2id, scrypt или bcrypt через поддерживаемую библиотеку, которая сама позаботится о соли и параметрах трудоёмкости.
Почему мой хеш отличается от хеша другого инструмента?
Обычно потому, что отличаются входные данные: лишний перевод строки или пробел, другая кодировка символов либо хеширование файла вместо его текстового содержимого. Сравнивайте именно те байты, которые хешируются.
Обновлено