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 році Гаетан Льорен та Томас Пейрен ще більше знизили вартість атаки за допомогою атаки колізії з обраним префіксом, що вимагала приблизно 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 ідентифікує кожен об'єкт (коміт, дерево, blob, тег) за його хешем SHA-1. Під час налагодження внутрішніх команд Git, перевірки pack-файлів або написання власних інструментів для роботи з Git швидкий генератор SHA-1 допомагає звіряти ідентифікатори об'єктів з очікуваними значеннями.
Перевірка застарілих систем
Багато старих систем, реєстрів пакетів та механізмів оновлення прошивки досі публікують контрольні суми SHA-1 разом із завантаженнями. Генеруйте та порівнюйте хеші SHA-1 для перевірки цілісності файлів, коли дайджести SHA-256 недоступні.
Цілісність підресурсів (SRI)
Хоча sha256 та sha384 є кращими для SRI-хешів у тегах HTML script та link, деякі застарілі конфігурації 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-символьний шістнадцятковий) дайджест та є вразливим до атак колізій. SHA-256 створює 256-бітний (64-символьний шістнадцятковий) дайджест та належить до сімейства 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 років процесорного часу на одному ядрі, але здійсненна на кластері 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-бітний дайджест без відомих практичних атак та добре підтримується на всіх платформах і мовах.