Skip to content

Генератор SHA-1 хешей (160-бит, устаревший)

Получайте SHA-1 хеши в браузере — 40-символьный hex-вывод, без загрузки на сервер. Устаревший инструмент для отпечатков Git, проверки старых сертификатов и аудита миграции.

Без отслеживания Работает в браузере Бесплатно
⚠️ SHA-1 — устаревший алгоритм. Для новых задач используйте SHA-256. Все вычисления выполняются локально — данные не загружаются.
Алгоритм
Проверено на корректность SHA-1 против тестовых векторов NIST FIPS 180-1; формулировка устаревания проверена по NIST SP 800-131A — Команда инженеров Go-Tools · May 28, 2026

Что такое 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. 1

    Вставьте текст или перетащите файл

    Выберите вкладку «Текст» и вставьте любую строку — сообщение коммита, тело сертификата или унаследованный ввод для контрольной суммы — в поле ввода. SHA-1 хеш обновляется по мере ввода. Для файлов переключитесь на вкладку «Файл» и перетащите любой файл в зону загрузки — браузер вычисляет хеш локально без загрузки на сервер.

  2. 2

    Скопируйте 40-символьный хеш

    Нажмите «Скопировать» рядом с выводом хеша. Полная 40-символьная строчная hex-строка попадает в буфер обмена. Используйте переключатель «ПРОПИСНЫЕ», если ваша унаследованная система ожидает прописные hex — некоторые старые инструменты и Windows API используют прописные буквы по умолчанию.

  3. 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(), Python hmac.compare_digest() — вместо наивного сравнения строк (=== или ==). Наивное сравнение утекает временну́ю информацию, которую теоретически можно использовать для восстановления ожидаемого хеша байт за байтом. Это мера защиты в глубину даже для устаревшей SHA-1 верификации.

Вопросы и ответы по SHA-1

SHA-1 ещё безопасен?
Нет. SHA-1 теоретически был ослаблен в 2005 году, а в феврале 2017 года Google и CWI Amsterdam продемонстрировали первую практическую коллизию через атаку SHAttered — два разных PDF-файла с одинаковыми SHA-1 хешами. NIST устарел SHA-1 для цифровых подписей в 2011 году (NIST SP 800-131A), все основные браузеры и центры сертификации прекратили принимать SHA-1 сертификаты к 2017 году. SHA-1 взломан для любых задач, связанных с безопасностью: подписи, сертификаты, хранение паролей. Для всех новых задач переходите на SHA-256.
Почему Git всё ещё использует SHA-1?
Git использует SHA-1 для идентификаторов объектов (хеши коммитов, деревьев, блобов), так как был разработан в 2005 году, когда SHA-1 ещё был широко доверенным. Применение в Git — это не криптографическая подпись, а схема адресации контента для обнаружения случайных повреждений, а не преднамеренной подмены. Проект Git выполняет миграцию с версии 2.29 (2020), добавившей поддержку --object-format=sha256. GitHub и крупные хостинги постепенно внедряют режим SHA-256. Существующие репозитории можно конвертировать, но миграция сложна из-за миллиардов существующих идентификаторов коммитов.
Стоит ли мигрировать с SHA-1 на SHA-256?
Да, для любой системы, связанной с безопасностью. Конкретный чек-лист миграции: (1) TLS-сертификаты — если у вас ещё есть SHA-1-подписанные сертификаты, замените их немедленно; CA в любом случае не выдаст новые. (2) Подписи API и HMAC — замените на HMAC-SHA-256. (3) Пароли, хранимые как SHA-1 — мигрируйте на bcrypt или Argon2. (4) Контрольные суммы документов или пакетов — переопубликуйте с SHA-256. (5) Репозитории Git — включайте режим SHA-256 для новых репозиториев, если инструментарий поддерживает.
Что такое атака SHAttered?
SHAttered (shattered.io, февраль 2017) — практическая SHA-1 коллизия, полученная Google Security и CWI Amsterdam. Атака потребовала примерно 110 GPU-лет вычислений (~110 000 USD по ценам облаков 2017 года) и создала два разных PDF-файла с одинаковым SHA-1 хешем: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a. Это опровергло предположение о теоретичности SHA-1 коллизий. К 2020 году стоимость SHA-1 коллизии упала до ~45 000 USD. Для сравнения — для SHA-256 не найдено ни одной коллизии.
Могут ли SHA-1 коллизии произойти случайно?
Случайно наткнуться на SHA-1 коллизию без целенаправленных усилий по-прежнему астрономически маловероятно — существует 2^160 возможных SHA-1 значений, вероятность случайной коллизии двух произвольных входных данных примерно 1 из 10^24. Опасность — в преднамеренных атаках: целеустремлённый злоумышленник может создать коллизию примерно за 45 000 USD. Случайное повреждение истории Git — нереальная угроза со стороны слабостей SHA-1. Реальный риск — в цифровых подписях, сертификатах и рабочих процессах подписания кода.
SHA-1 подходит для несекьюрити-задач вроде контрольных сумм?
Для обнаружения случайного повреждения данных — искажённого скачивания, перевёрнутого бита на диске — SHA-1 технически ещё достаточен, так как случайные коллизии по-прежнему практически невозможны. Однако сегодня нет веских причин использовать SHA-1 даже для несекьюрити-контрольных сумм, потому что SHA-256 лишь незначительно медленнее (аппаратно ускорен в современных CPU), универсально поддерживается и не устаревает. Единственная законная причина использовать SHA-1 сейчас — совместимость с унаследованной системой, принимающей только 40-символьные hex-отпечатки.
Какова длина SHA-1 хеша?
SHA-1 хеш всегда ровно 160 бит, представленных как 40 шестнадцатеричных символов (2 hex-символа на байт × 20 байт). Длина вывода фиксирована независимо от размера входных данных — хеширование одного символа и файла в 10 ГБ дают ровно 40 hex-символов. Для сравнения: MD5 даёт 32 hex-символа (128 бит), SHA-256 — 64 (256 бит), SHA-512 — 128 (512 бит).
Отправляются ли мои данные на сервер?
Нет. SHA-1 вычисляется полностью в браузере через Web Crypto API (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.