bitlvl
RU

Генератор хешей

Введите текст или перетащите файл и получите все пять дайджестов сразу. Добавьте ключ для HMAC. Вставьте ожидаемое значение, чтобы проверить загруженный файл. Всё вычисляется на вашем устройстве.

Или перетащите файл, или

Результаты и сообщения этого инструмента выводятся на английском языке.

Что такое хеш

Криптографический хеш превращает любые входные данные в отпечаток фиксированного размера. Измените один бит входа — и весь результат изменится; по результату нет практического способа вернуться ко входу; и невозможно найти два входа с одинаковым хешем (для алгоритмов, которые всё ещё безопасны). Это делает хеши полезными для проверки загрузок, обнаружения изменений, дедупликации данных и, с солью и медленным алгоритмом, для хранения паролей.

АлгоритмРезультатСтатусПрименение сегодня
MD5128 бит (32 hex)Взломан: коллизии тривиальныУстаревшие контрольные суммы, ключи кеша. Никогда для безопасности.
SHA-1160 бит (40 hex)Взломан: коллизии продемонстрированы (2017)Идентификаторы объектов Git (заменяются). Не для подписей.
SHA-256256 бит (64 hex)БезопасенВариант по умолчанию: TLS, подпись кода, контрольные суммы загрузок, Bitcoin.
SHA-384384 бит (96 hex)БезопасенГде нужен больший запас; subresource integrity.
SHA-512512 бит (128 hex)БезопасенБыстрее SHA-256 на 64-битных CPU; хеши паролей Linux (sha512crypt).

HMAC

HMAC подмешивает секретный ключ в хеш особым образом (RFC 2104), так что только обладатель ключа может создать или проверить значение. Это механизм, стоящий за JWT HS256, подписями вебхуков (GitHub, Stripe), подписью запросов AWS и кодами TOTP. Простой hash(key + message) для этого не безопасен; HMAC существует, чтобы устранить уязвимость к length-extension у такой конструкции.

Проверка загруженного файла

  1. Найдите опубликованную контрольную сумму на странице загрузки (часто это файл SHA256SUMS).
  2. Перетащите сюда загруженный файл или выполните sha256sum file в shell.
  3. Вставьте опубликованное значение в поле сравнения. Совпадение означает, что файл байт в байт соответствует опубликованному.

Совпадающий хеш доказывает целостность, а не подлинность: если злоумышленник может подменить файл, он может подменить и контрольную сумму рядом с ним. Для подлинности нужна подпись (GPG, Sigstore, minisign).

Пароли

Не храните пароли в виде хешей SHA-256. Быстрые хеши перебираются на GPU миллиардами в секунду. Используйте медленную, солёную, требовательную к памяти функцию, созданную для этой задачи: Argon2id, scrypt или bcrypt.

Вопросы

Какой хеш использовать?

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

Можно ли расшифровать хеш?

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

Почему мой MD5 отличается от указанного на сайте?

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

SHA-256, вычисленный здесь, совпадает с sha256sum?

Да, байт в байт. Инструмент использует реализацию WebCrypto браузера для семейства SHA. Для текстового ввода байты — это UTF-8 кодировка введённого.

Мой файл или пароль куда-то отправляется?

Нет. Хеширование выполняется локально на JavaScript. У сайта нет серверного компонента, который мог бы их получить.