Хэш SHA-1 онлайн
160-битный хэш NSA 1995 года — официально сломан атакой SHAttered (2017), но местами ещё встречается. Считается прямо в браузере — текст никуда не отправляется.
Вычислить SHA-1
Результат пересчитывается сам, пока вы печатаете. В режиме «По строкам» пустые строки тоже хэшируются — результат всегда совпадает по числу строк со входом. Нужна другая функция — на полной странице калькулятора их 32.
История SHA-1
SHA-1 — часть семейства алгоритмов Secure Hash Algorithm, разработанного Агентством национальной безопасности США (NSA) и опубликованного Национальным институтом стандартов (NIST) как федеральный стандарт FIPS 180. Первая версия, SHA-0, вышла в 1993 году, но год спустя NSA обнаружило в ней недокументированную слабость и в 1995-м выпустило исправленную версию — собственно SHA-1.
Следующие полтора десятилетия SHA-1 был фактическим стандартом отрасли: сертификаты TLS/SSL, подписи git-коммитов, PGP, десятки протоколов и файловых форматов. Именно этот статус «стандарта по умолчанию» сделал его крах в 2017 году таким заметным событием в индустрии.
Как устроен алгоритм
SHA-1 использует ту же конструкцию Меркла — Дамгора, что и MD5: сообщение дополняется до кратности 512 битам, делится на блоки, каждый блок обновляет внутреннее состояние через функцию сжатия. Отличие — в деталях: состояние хранится в пяти 32-битных регистрах (A, B, C, D, E), а каждый блок проходит не 64, а 80 раундов (4 группы по 20).
Перед раундами 512-битный блок сначала «растягивается» в 80 32-битных слов процедурой message schedule: первые 16 слов берутся прямо из блока, а каждое следующее получается как XOR четырёх более ранних слов с последующим циклическим сдвигом на 1 бит влево. Это заставляет каждый бит исходного блока влиять на много шагов вперёд — без такого расширения было бы проще подобрать локальные изменения, не задевающие весь хэш.
Характеристики
| Параметр | Значение |
|---|---|
| Длина хэша | 160 бит (40 hex-символов) |
| Размер блока | 512 бит |
| Раундов на блок | 80 (4 × 20) |
| Внутреннее состояние | 5 × 32-битных регистра (A–E) |
| Конструкция | Меркла — Дамгора |
| Опубликован | 1995, FIPS 180-1 (NIST/NSA) |
Где применяется
- Идентификаторы объектов в Git (исторически — переход на SHA-256 идёт постепенно)
- Устаревшие TLS-сертификаты и подписи — современные браузеры их больше не принимают
- Контрольные суммы и сверка файлов в системах, где ещё не обновили алгоритм
Криптостойкость
SHA-1 официально сломан. Теоретическая атака была описана ещё в 2005 году (Ван Сяоюнь с соавторами), а в феврале 2017 года команда Google и CWI Amsterdam опубликовала первую практическую коллизию — атаку «SHAttered»: два разных PDF-файла с одинаковым SHA-1. NIST официально запретил использовать SHA-1 для цифровых подписей с 2011 года, а крупные браузеры перестали принимать SHA-1-сертификаты к 2017-му.
Для подписей, сертификатов и любых задач, где важна защита от подделки, используйте SHA-256 или новее. Для проверки случайных повреждений (не злонамеренных) SHA-1 всё ещё технически работает, но по инерции — веской причины выбирать именно его сегодня нет.