SHA-1 Hash Generator

Генерировать SHA-1-хеш из любого текста

Входной текст

Работает локально · Безопасно вставлять секреты

SHA-1-хеш

SHA-1-хеш появится здесь…

Что такое SHA-1?

SHA-1 (Secure Hash Algorithm 1) — криптографическая хеш-функция, которая вычисляет фиксированный 160-битный (20-байтовый) дайджест для любых входных данных. Алгоритм опубликован NSA и стандартизирован NIST в 1995 году как FIPS PUB 180-1, а позднее задокументирован в RFC 3174. SHA-1 создавался как более надёжная замена SHA-0 и MD5. Алгоритм обрабатывает входные данные блоками по 512 бит через 80 раундов побитовых операций, формируя 40-символьный шестнадцатеричный отпечаток, который более десятилетия служил основой SSL/TLS, PGP, SSH и IPsec.

Как и все криптографические хеш-функции, SHA-1 реализует одностороннее преобразование: вычислить хеш по входным данным быстро, а восстановить исходные данные по хешу вычислительно невозможно. Изменение одного бита во входных данных приводит к полностью другому 160-битному дайджесту — это свойство называется лавинным эффектом. SHA-1 отображает произвольно большое пространство входных данных на фиксированный 160-битный выход, что математически неизбежно приводит к коллизиям (два разных входа с одинаковым хешем). Требование безопасности хеш-функции состоит в том, что поиск таких коллизий должен требовать примерно 2^80 операций — половину длины выходного блока в битах.

В 2017 году Google и CWI Amsterdam опубликовали атаку SHAttered, продемонстрировав первую практическую коллизию SHA-1 путём создания двух разных PDF-файлов с одинаковым дайджестом. Атака потребовала около 2^63.1 вычислений SHA-1 — значительно меньше теоретической границы 2^80. В 2020 году Gaetan Leurent и Thomas Peyrin снизили стоимость атаки с выбранным префиксом до примерно 2^63.4 операций. В результате все основные браузеры, удостоверяющие центры и органы стандартизации признали SHA-1 устаревшим для цифровых подписей и TLS-сертификатов. Однако SHA-1 по-прежнему активно применяется в задачах, не связанных с безопасностью: идентификаторы объектов Git (хотя Git мигрирует на SHA-256), устаревшие конструкции HMAC и контрольные суммы файлов там, где устойчивость к коллизиям от злоумышленника не требуется.

Зачем использовать этот генератор SHA-1?

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

Мгновенное хеширование
Результат обновляется по мере ввода. Никаких кнопок, никакого ожидания — SHA-1-дайджест появляется посимвольно по мере изменения входных данных.
🔒
Обработка с приоритетом конфиденциальности
Всё хеширование выполняется локально в браузере с использованием Web Crypto API. Введённый текст никогда не покидает устройство и не отправляется ни на какой сервер.
📋
Копирование одним кликом
Скопируйте хеш в буфер обмена одним щелчком. Переключайтесь между строчным и прописным шестнадцатеричным выводом в соответствии с форматом, который ожидает ваша система.
🔍
Без регистрации
Никакой регистрации, авторизации и ограничений на использование. Откройте страницу и сразу начинайте хешировать. Работает на любом устройстве с современным браузером.

Сценарии использования SHA-1

Внутренности Git и отладка
Git идентифицирует каждый объект (коммит, дерево, блоб, тег) по его SHA-1-хешу. При отладке низкоуровневых команд Git, проверке pack-файлов или разработке инструментов для работы с Git быстрый генератор SHA-1 помогает сверить идентификаторы объектов с ожидаемыми значениями.
Проверка устаревших систем
Многие старые системы, реестры пакетов и механизмы обновления прошивок по-прежнему публикуют SHA-1-контрольные суммы вместе со скачиваемыми файлами. Генерируйте и сравнивайте SHA-1-хеши для проверки целостности файлов там, где SHA-256-дайджесты недоступны.
Subresource Integrity (SRI)
Хотя sha256 и sha384 предпочтительны для SRI-хешей в тегах script и link HTML, некоторые устаревшие конфигурации CDN по-прежнему используют SHA-1. Генерируйте ожидаемый дайджест для аудита или перехода с существующих SRI-атрибутов.
QA и регрессионное тестирование
Сравнивайте SHA-1-хеши API-ответов, артефактов сборки или снимков базы данных между запусками тестов, чтобы выявлять неожиданные изменения без побайтового сравнения больших файлов.
Дедупликация данных
Вычисляйте SHA-1-хеши содержимого файлов или записей в ETL-пайплайнах для поиска дубликатов. 160-битный вывод обеспечивает более надёжную гарантию уникальности, чем MD5, в сценариях дедупликации без злоумышленника.
Обучение и исследование
SHA-1 — хорошо задокументированный алгоритм с обширной академической литературой. Экспериментируйте с ним, чтобы понять конструкцию Меркле-Дамгарда, расписание сообщений и то, почему устойчивость к коллизиям нарушается, когда длина выходного блока слишком мала по меркам современных вычислительных возможностей.

SHA-1 против других хеш-алгоритмов

SHA-1 производит 160-битный дайджест — длиннее, чем MD5 (128 бит), но значительно короче алгоритмов семейства SHA-2. В таблице ниже сравниваются размеры дайджестов, стандарты и подходящие сценарии использования для каждого алгоритма.

АлгоритмРазмер дайджестаДлина в hexСтандартОптимален для
SHA-1160 bits40 hex chars1995 / RFC 3174Deprecated — legacy git commits, old TLS
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
MD5128 bits32 hex chars1992 / RFC 1321Checksums only — broken since 2004
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, alternative to SHA-2
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

Как работает SHA-1

SHA-1 построен на конструкции Меркле-Дамгарда: сообщение дополняется, разбивается на блоки по 512 бит, и каждый блок обрабатывается через 80 раундов побитовых операций, смешивающих входные данные с расписанием сообщений, производным от блока. Пять 32-битных переменных состояния (H0–H4) хранят текущее состояние хеша, а конкатенация этих слов в конце формирует 160-битный дайджест.

Input: "hello world"
SHA-1: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
(160 bits = 20 bytes = 40 hex characters)
ШагОписание
PaddingAppend a 1-bit, then zeros, until message length is 448 mod 512. Append the original length as a 64-bit big-endian integer.
Block splittingDivide the padded message into 512-bit (64-byte) blocks.
ExpansionExpand each 16-word block into 80 words using a left-rotate-by-1 XOR feedback schedule.
CompressionProcess 80 rounds per block using four nonlinear functions (Ch, Parity, Maj, Parity) across rounds 0-19, 20-39, 40-59, and 60-79.
OutputConcatenate the five 32-bit state words (H0-H4) into a 160-bit (20-byte) digest, rendered as 40 hexadecimal characters.

Ключевое отличие SHA-1 от MD5 — количество переменных состояния (5 против 4), количество раундов на блок (80 против 64) и использование расписания сообщений с обратной связью через левый сдвиг. Эти различия дают SHA-1 больший выход (160 против 128 бит) и изначально обеспечивали более высокий запас безопасности, хотя оба алгоритма сейчас считаются скомпрометированными с точки зрения устойчивости к коллизиям.

Примеры кода

Как генерировать SHA-1-хеши на популярных языках и в различных средах. В отличие от MD5, SHA-1 доступен через браузерный Web Crypto API, что позволяет использовать его без внешних библиотек как в браузере, так и в среде Node.js.

JavaScript (Web Crypto API — browser & Node.js)
// SHA-1 is available in the Web Crypto API
async function sha1(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-1', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha1('hello world')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha1').update('hello world').digest('hex')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
Python
import hashlib

# Basic SHA-1 hash
result = hashlib.sha1(b'hello world').hexdigest()
print(result)  # → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a string (encode to bytes first)
text = 'hello world'
hashlib.sha1(text.encode('utf-8')).hexdigest()
# → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a file in chunks
with open('file.bin', 'rb') as f:
    sha1 = hashlib.sha1()
    for chunk in iter(lambda: f.read(8192), b''):
        sha1.update(chunk)
    print(sha1.hexdigest())
Go
package main

import (
    "crypto/sha1"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha1.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
}
CLI (Linux / macOS)
# Using sha1sum (Linux) or shasum (macOS)
echo -n "hello world" | sha1sum
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# macOS
echo -n "hello world" | shasum -a 1
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# Hash a file
sha1sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl sha1
# → SHA1(stdin)= 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

Часто задаваемые вопросы

Безопасно ли использовать SHA-1?
SHA-1 небезопасен для приложений, чувствительных к безопасности. Атака SHAttered в 2017 году продемонстрировала практическую генерацию коллизий, а атака с выбранным префиксом в 2020 году ещё снизила её стоимость. Для цифровых подписей, TLS-сертификатов или любых сценариев, где злоумышленник может подобрать сталкивающиеся входные данные, используйте SHA-256 или SHA-3. Для задач, не связанных с безопасностью, — например, контрольных сумм и ключей кэша, где злоумышленник не контролирует входные данные, — SHA-1 остаётся работоспособным.
В чём разница между SHA-1 и SHA-256?
SHA-1 производит 160-битный (40-символьный hex) дайджест и уязвим к атакам на коллизии. SHA-256 производит 256-битный (64-символьный hex) дайджест и относится к семейству SHA-2, для которого не известны практические атаки. SHA-256 примерно на 20–30% медленнее SHA-1 на одном оборудовании, однако дополнительные 96 бит выхода и отсутствие известных структурных уязвимостей делают его рекомендацией по умолчанию для любого нового проекта.
Почему Git использует SHA-1?
Когда Линус Торвальдс разрабатывал Git в 2005 году, SHA-1 считался безопасным и обеспечивал хороший баланс скорости и устойчивости к коллизиям для адресации содержимого. Git использует SHA-1 как идентификатор содержимого, а не как механизм безопасности — он обнаруживает случайное повреждение данных, а не злоумышленное вмешательство. С 2021 года Git переходит на SHA-256 в рамках механизма расширения хеш-функций, описанного в плане git-hash-function-transition.
Можно ли восстановить исходные данные из SHA-1-хеша?
Нет. SHA-1 — односторонняя функция, которая необратимо теряет информацию в процессе хеширования. Для коротких или распространённых входных данных злоумышленники могут использовать радужные таблицы или перебор для нахождения исходного текста, но это не обращение алгоритма — это полный перебор пространства входных данных. Для паролей используйте bcrypt, scrypt или Argon2 вместо любой быстрой хеш-функции.
Как работает атака SHAttered?
Атака SHAttered использует структурные слабости функции сжатия SHA-1. Тщательно сконструировав два разных 512-битных блока сообщений, производящих одно и то же промежуточное состояние хеша, исследователи создали два PDF-файла с идентичными SHA-1-дайджестами, но разным видимым содержимым. Атака потребовала около 2^63 вычислений SHA-1 — примерно 6 500 лет на одном CPU, но выполнимо на кластере GPU за несколько месяцев. С тех пор стоимость атаки ещё снизилась благодаря улучшенным методам.
В чём разница между SHA-1 и HMAC-SHA1?
SHA-1 — обычная хеш-функция: hash = SHA1(message). HMAC-SHA1 — код аутентификации сообщений с ключом: mac = HMAC(key, message). HMAC оборачивает хеш-функцию в конструкцию, защищающую от атак на расширение длины и требующую секретного ключа. Примечательно, что HMAC-SHA1 по-прежнему считается безопасным для аутентификации сообщений, несмотря на то что SHA-1 сам по себе скомпрометирован с точки зрения коллизий, — поскольку безопасность HMAC зависит от свойств псевдослучайной функции сжатия, а не от устойчивости к коллизиям.
Что лучше для контрольных сумм файлов: SHA-1 или MD5?
SHA-1 — лучший выбор по сравнению с MD5 для контрольных сумм файлов. MD5 производит 128-битный дайджест и был взломан ещё в 2004 году — практические атаки на коллизии сейчас выполняются за секунды. SHA-1 производит 160-битный дайджест, и его атаки на коллизии, хотя и продемонстрированы, остаются более дорогостоящими. Тем не менее для любой новой системы предпочтительнее SHA-256 — он обеспечивает 256-битный дайджест без известных практических атак и широко поддерживается на всех платформах и в языках программирования.