Генератор SHA-1 хешей (160-бит, устаревший)
Получайте SHA-1 хеши в браузере — 40-символьный hex-вывод, без загрузки на сервер. Устаревший инструмент для отпечатков Git, проверки старых сертификатов и аудита миграции.
Что такое SHA-1?
SHA-1 (Secure Hash Algorithm 1) — 160-битная криптографическая хеш-функция, опубликованная NIST в 1995 году как FIPS 180-1. Она была разработана Агентством национальной безопасности США на замену SHA-0 (более ранней версии с уязвимостями, быстро отозванной в 1993 году) и являлась доминирующим алгоритмом хеширования для цифровых подписей, TLS-сертификатов и подписания кода на протяжении 2000-х годов.
История взломов: В 2005 году команда Сяоюнь Ван опубликовала теоретическую атаку, снижавшую устойчивость SHA-1 к коллизиям с ожидаемых 2^80 до 2^63 операций — теоретический взлом, но ещё не практический. В феврале 2017 года Google и CWI Amsterdam опубликовали атаку SHAttered, создав два разных PDF-документа с одинаковыми SHA-1 хешами, потратив примерно 110 GPU-лет вычислений. Это стало окончательным практическим взломом. NIST уже устарел SHA-1 для подписей в 2011 году (NIST SP 800-131A); производители браузеров и центры сертификации удалили поддержку SHA-1 сертификатов в 2016–2017 годах.
Текущий статус: SHA-1 устарел для всех задач, связанных с безопасностью — цифровые подписи, отпечатки сертификатов, хранение паролей, подписание кода. Он сохраняется в формате идентификаторов объектов Git (хеши коммитов), где используется для адресации контента, а не безопасности, и в контрольных суммах устаревшего ПО, где администраторы ещё не выполнили миграцию. Проект Git добавил поддержку формата объектов SHA-256 в версии 2.29 (октябрь 2020 года). Все новые проекты должны использовать SHA-256 или более сильные алгоритмы.
Данный инструмент вычисляет SHA-1 полностью в браузере через crypto.subtle.digest('SHA-1', ...) из Web Crypto API. 40-символьный hex-вывод идентичен тому, что производят sha1sum, openssl dgst -sha1 или git hash-object. Никакие байты не отправляются на сервер.
SHA-1 против семейства SHA-2: SHA-1 даёт 40 hex-символов (160 бит). SHA-256 даёт 64 hex-символа (256 бит) и не имеет известных уязвимостей. MD5 даёт 32 hex-символа (128 бит) и был взломан раньше (2004). Для любых новых задач хеширования SHA-256 — стандартный выбор.
// Hash text using Web Crypto API (SHA-1 — legacy use only)
async function sha1(text) {
const data = new TextEncoder().encode(text);
const hash = await crypto.subtle.digest('SHA-1', data);
return Array.from(new Uint8Array(hash))
.map(b => b.toString(16).padStart(2, '0'))
.join('');
}
await sha1('Hello, World!');
// → '0a0a9f2a6772942557ab5355d76af442f8f65e01'
// ⚠️ SHA-1 is broken — use SHA-256 for new work. Примеры SHA-1
Поиск отпечатка коммита Git
tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 author A Dev <dev@example.com> 1716854400 +0000 committer A Dev <dev@example.com> 1716854400 +0000 Initial commit
Git хранит каждый коммит как объект, SHA-1 которого вычисляется из заголовка коммита плюс содержимое в точно таком формате. 40-символьная hex-строка, которую показывает `git log`, — это прямой SHA-1 отпечаток. Вставьте текст сырого объекта коммита, чтобы воспроизвести тот же хеш — полезно при отладке вывода `git cat-file` или проверке зеркального репозитория. Примечание: Git 2.29+ поддерживает режим SHA-256 (git init --object-format=sha256). Для новых репозиториев предпочтительнее режим SHA-256.
Проверка отпечатка устаревшего TLS-сертификата
-----BEGIN CERTIFICATE----- MIIDXTCCAkWgAwIBAgIJAKlL... -----END CERTIFICATE-----
До 2017 года браузеры отображали отпечатки сертификатов как 40-символьные SHA-1 hex-строки. CA прекратили выпускать SHA-1-подписанные сертификаты в январе 2016 года, все основные браузеры удалили поддержку к началу 2017 года. Если вы проверяете старый внутренний сертификат или IoT-устройство, вставьте тело PEM, чтобы воспроизвести SHA-1 отпечаток. Современные процессы используют 64-символьный отпечаток SHA-256.
Проверка старого архива ПО
node-v0.12.7-linux-x64.tar.gz
Некоторые старые архивы ПО публикуют только SHA-1 контрольную сумму рядом со скачиваемым файлом. Хотя это обеспечивает лишь базовое обнаружение повреждений (не защиту от подмены), это лучше, чем отсутствие контрольной суммы. Используйте вкладку «Файл», чтобы перетащить архив, вычислить SHA-1 и сравнить с опубликованным значением. Если доступен SHA-256, всегда предпочитайте его. Для новых архивов настаивайте на SHA-256 или SHA-512.
Демонстрация коллизии SHAttered
(Вставьте содержимое файла shattered-1.pdf через вкладку «Файл»)
В феврале 2017 года Google и CWI Amsterdam опубликовали атаку SHAttered — первую практическую SHA-1 коллизию. Они создали два разных PDF-файла (shattered-1.pdf и shattered-2.pdf) с одинаковым SHA-1 хешем: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a. Загрузка любого из этих PDF через вкладку «Файл» даст именно этот хеш — это доказывает реальность коллизии. Два разных документа с одним отпечатком означают, что отпечатку нельзя доверять. Используйте SHA-256 для всех новых процессов проверки целостности документов.
Как получить SHA-1 хеши
- 1
Вставьте текст или перетащите файл
Выберите вкладку «Текст» и вставьте любую строку — сообщение коммита, тело сертификата или унаследованный ввод для контрольной суммы — в поле ввода. SHA-1 хеш обновляется по мере ввода. Для файлов переключитесь на вкладку «Файл» и перетащите любой файл в зону загрузки — браузер вычисляет хеш локально без загрузки на сервер.
- 2
Скопируйте 40-символьный хеш
Нажмите «Скопировать» рядом с выводом хеша. Полная 40-символьная строчная hex-строка попадает в буфер обмена. Используйте переключатель «ПРОПИСНЫЕ», если ваша унаследованная система ожидает прописные hex — некоторые старые инструменты и Windows API используют прописные буквы по умолчанию.
- 3
Сравните с устаревшим отпечатком
Переключитесь на вкладку «Сравнение» и вставьте два SHA-1 хеша рядом для подтверждения совпадения. Удобно для проверки контрольной суммы устаревшего публикатора, аудита зеркального репозитория Git или проверки старого отпечатка TLS-сертификата из документа, составленного до перехода на SHA-256.
Технические детали
- Алгоритм: конструкция Меркла–Дамгора, 80 раундов
- SHA-1 обрабатывает ввод 512-битными (64-байтными) блоками, применяя 80 раундов побитовых операций, сгруппированных в четыре стадии по 20 раундов, каждая с разной логической функцией (Ch, Parity, Maj, Parity) и аддитивными константами. Начальное хеш-состояние — пять 32-битных слов (A–E). Реализация определена в FIPS 180-1 (1995), заменённом FIPS 180-4 (2015), который формально включает язык устаревания.
- Вывод: 160 бит, 40 hex-символов
- Всегда ровно 40 строчных шестнадцатеричных символов (160 бит = 20 байт, 2 hex-символа на байт). Длина вывода фиксирована независимо от размера ввода. По сравнению с 64 символами SHA-256, более короткий вывод обеспечивает меньше бит устойчивости к коллизиям — ключевая причина, по которой SHA-1 был взломан раньше SHA-256.
- Производительность: быстрый, и это часть проблемы
- SHA-1 быстр — обычно 400–700 МБ/с в браузере через Web Crypto, сопоставимо с SHA-256. Для злоумышленника эта скорость — преимущество: современный GPU-кластер вычисляет миллиарды SHA-1 хешей в секунду, ускоряя перебор и поиск коллизий. Скорость — причина, по которой SHA-1 (как и MD5) нельзя использовать для хранения паролей — применяйте bcrypt, scrypt или Argon2.
- Стандарты: FIPS 180-1 (1995) — устарел в контексте FIPS 180-4
- SHA-1 стандартизирован в FIPS 180-1 (1995), заменив дефектный SHA-0. NIST устарел SHA-1 для цифровых подписей в NIST SP 800-131A (2011), а в FIPS 186-5 (2023) формально запретил его для всей генерации цифровых подписей. RFC 6194 (2011) задокументировал известные соображения безопасности. W3C WebCrypto API по-прежнему включает SHA-1 для обратной совместимости — именно это позволяет данному браузерному инструменту его вычислять.
Лучшие практики
- Никогда не используйте SHA-1 для задач, связанных с безопасностью
- SHA-1 устарел для цифровых подписей, TLS-сертификатов, подписания кода, хранения паролей и любых процессов, где важна устойчивость к коллизиям. Атака SHAttered 2017 года продемонстрировала практические коллизии. Для всех задач безопасности мигрируйте на SHA-256 или SHA-3. Разница в стоимости незначительна на современном железе — SHA-256 аппаратно ускорен во всех современных CPU.
- SHA-1 допустим для поиска устаревших отпечатков
- Если нужно проверить контрольную сумму файла до 2017 года, найти идентификатор коммита Git или просмотреть старый отпечаток сертификата для целей аудита — SHA-1 уместен. Сам хеш не используется для принятия решений о доверии — вы просто воспроизводите известный отпечаток для перекрёстной ссылки. Явно задокументируйте это в журналах аудита: «SHA-1 использован только для устаревшей ссылки, не для проверки безопасности».
- Всегда хешируйте байты UTF-8, а не кодовые точки Unicode
- SHA-1, как и все алгоритмы хеширования, работает с байтами, а не символами. Одна и та же строка в кодировках UTF-8 и UTF-16 даёт разные хеши. Этот инструмент всегда кодирует ввод как UTF-8 без BOM перед вычислением хеша. Если нужно совпасть с системой, использующей другую кодировку (Windows UTF-16-LE, Latin-1), необходимо предварительно закодировать ввод внешними средствами.
- Используйте постоянное по времени сравнение при проверке хешей в коде
- При сравнении двух SHA-1 хешей в коде используйте проверку равенства за константное время — Node.js
crypto.timingSafeEqual(), Pythonhmac.compare_digest()— вместо наивного сравнения строк (=== или ==). Наивное сравнение утекает временну́ю информацию, которую теоретически можно использовать для восстановления ожидаемого хеша байт за байтом. Это мера защиты в глубину даже для устаревшей SHA-1 верификации.
Вопросы и ответы по SHA-1
SHA-1 ещё безопасен?
Почему Git всё ещё использует SHA-1?
--object-format=sha256. GitHub и крупные хостинги постепенно внедряют режим SHA-256. Существующие репозитории можно конвертировать, но миграция сложна из-за миллиардов существующих идентификаторов коммитов. Стоит ли мигрировать с SHA-1 на SHA-256?
Что такое атака SHAttered?
Могут ли SHA-1 коллизии произойти случайно?
SHA-1 подходит для несекьюрити-задач вроде контрольных сумм?
Какова длина SHA-1 хеша?
Отправляются ли мои данные на сервер?
crypto.subtle.digest('SHA-1', data)). Откройте DevTools → вкладку Network при вычислении хеша — увидите ноль исходящих запросов. Файлы, которые вы перетаскиваете, читаются через FileReader API и обрабатываются локально; байты никогда не покидают устройство. Инструмент безопасен для хеширования конфиденциальных документов, устаревших сертификатов или проприетарного исходного кода. Та же гарантия конфиденциальности применима к генератору SHA-256. Почему мой SHA-1 вывод отличается от sha1sum в командной строке?
echo 'hello' | sha1sum включает символ новой строки (\n) после 'hello', поэтому хеш вычисляется от 'hello\n', а не 'hello'. Используйте echo -n 'hello' | sha1sum или printf '%s' 'hello' | sha1sum, чтобы его убрать. Другие распространённые причины: переносы строк Windows (\r\n против \n), UTF-8 BOM в начале файла, разные кодировки (UTF-8 против Latin-1). Этот инструмент кодирует ввод как UTF-8 без BOM перед вычислением хеша. Похожие инструменты
Все инструменты →Декодер JWT
Безопасность
Декодируйте JWT-токены онлайн бесплатно. Просмотр header, payload, signature, срока действия, алгоритма и claims. 100% в браузере — токен не покидает устройство. Без регистрации.
Генератор MD5-хешей и контрольных сумм файлов
Безопасность
Создавайте MD5, SHA-256, SHA-1 и SHA-512 хеши онлайн бесплатно. Хеширование текста или файлов в браузере, проверка контрольных сумм и копирование результатов. Без регистрации.
Генератор случайных паролей — настраиваемый и безопасный
Безопасность
Генерируйте сильные случайные пароли мгновенно — бесплатно, 100% в браузере. Настройка длины и символов, batch до 50 с анализом энтропии.
Генератор SHA-256 хешей и контрольных сумм
Безопасность
Получайте SHA-256 хеши онлайн бесплатно. Хеширование текста или файлов в браузере, проверка контрольных сумм, 64-символьный hex-вывод. Без регистрации; данные не покидают страницу.
Генератор SHA-3 хешей (Keccak SHA3-256)
Безопасность
Получайте SHA-3 хеши онлайн бесплатно. Конструкция губки NIST FIPS 202 — постSHA-2 стандарт. Вывод SHA3-256 в 64 hex-символах. Только в браузере через отложенно загружаемый js-sha3; без загрузки данных.
Генератор SHA-384 хешей (хеш TLS Suite B)
Безопасность
Получайте SHA-384 хеши онлайн — 96-символьный hex-вывод, защита от атак расширения длины, соответствие NSA Suite B. Используется с AES-256-GCM в TLS. Все вычисления в браузере через Web Crypto API.