Generator Hasha SHA-1

Generuj hash SHA-1 z dowolnego tekstu

Tekst wejściowy

Działa lokalnie · Bezpieczne do wklejania sekretów

Hash SHA-1

Hash SHA-1 pojawi się tutaj…

Czym jest haszowanie SHA-1?

SHA-1 (Secure Hash Algorithm 1) to kryptograficzna funkcja skrótu produkująca stały 160-bitowy (20-bajtowy) skrót z dowolnych danych wejściowych. Opublikowana przez NSA i ustandaryzowana przez NIST w 1995 roku jako FIPS PUB 180-1, a następnie udokumentowana w RFC 3174, SHA-1 była zaprojektowana jako mocniejszy następca SHA-0 i MD5. Algorytm przetwarza dane wejściowe w 512-bitowych blokach przez 80 rund operacji bitowych, produkując 40-znakowy szesnastkowy odcisk palca, który przez ponad dekadę stanowił fundament SSL/TLS, PGP, SSH i IPsec.

Jak wszystkie kryptograficzne funkcje skrótu, SHA-1 jest przekształceniem jednokierunkowym: obliczenie skrótu z danych wejściowych jest szybkie, ale odtworzenie danych wejściowych z samego skrótu jest obliczeniowo niewykonalne. Zmiana jednego bitu na wejściu powoduje całkowicie inny 160-bitowy skrót — właściwość zwana efektem lawinowym. SHA-1 odwzorowuje dowolnie duką przestrzeń wejściową na stałe 160-bitowe wyjście, co oznacza, że kolizje (dwa różne dane wejściowe dające ten sam skrót) matematycznie muszą istnieć. Twierdzenie bezpieczeństwa funkcji skrótu mówi, że znalezienie takich kolizji powinno wymagać około 2^80 operacji — połowy długości bitów wyjścia.

W 2017 roku Google i CWI Amsterdam opublikowały atak SHAttered, demonstrując pierwszą praktyczną kolizję SHA-1 przez wyprodukowanie dwóch różnych plików PDF z tym samym skrótem. Atak wymagał około 2^63,1 obliczeń SHA-1 — znacznie poniżej teoretycznej granicy 2^80. W 2020 roku Gaetan Leurent i Thomas Peyrin jeszcze bardziej obniżyli koszt atakiem kolizji z wybranym prefiksem, wymagającym około 2^63,4 operacji. W rezultacie wszystkie główne przeglądarki, urzędy certyfikacji i organy normalizacyjne wycofały SHA-1 dla podpisów cyfrowych i certyfikatów TLS. Jednak SHA-1 pozostaje aktywnie używany do celów niezwiązanych z bezpieczeństwem: identyfikatory obiektów Git (choć Git migruje do SHA-256), starsze konstrukcje HMAC i sumy kontrolne integralności plików, gdzie odporność na kolizje w warunkach przeciwnika nie jest wymagana.

Dlaczego warto używać tego generatora SHA-1?

Generuj skróty SHA-1 natychmiast bez instalowania czegokolwiek ani pisania kodu. Wklej tekst i uzyskaj 40-znakowy skrót szesnastkowy w czasie rzeczywistym — przydatne do weryfikacji starszych sum kontrolnych, debugowania mechanizmów wewnętrznych Git lub testowania przepływów pracy opartych na skrótach.

Natychmiastowe skracanie
Wynik aktualizuje się podczas pisania. Bez klikania przycisków, bez oczekiwania — skrót SHA-1 pojawia się znak po znaku w miarę modyfikowania danych wejściowych.
🔒
Przetwarzanie z priorytetem prywatności
Całe skracanie odbywa się lokalnie w przeglądarce za pomocą Web Crypto API. Wprowadzony tekst nigdy nie opuszcza urządzenia i nie jest wysyłany na żaden serwer.
📋
Kopiowanie jednym kliknięciem
Skopiuj skrót do schowka jednym kliknięciem. Przełączaj między małymi a wielkimi literami w wyjściu szesnastkowym, aby dopasować do formatu oczekiwanego przez system.
🔍
Bez konta
Bez rejestracji, bez logowania, bez limitów użycia. Otwórz stronę i zacznij skracanie natychmiast. Działa na każdym urządzeniu z nowoczesną przeglądarką.

Przypadki użycia SHA-1

Mechanizmy wewnętrzne Git i debugowanie
Git identyfikuje każdy obiekt (commit, drzewo, blob, tag) za pomocą jego skrótu SHA-1. Podczas debugowania poleceń wewnętrznych Git, weryfikowania plików pack lub pisania własnych narzędzi Git, szybki generator SHA-1 pomaga weryfikować identyfikatory obiektów względem oczekiwanych wartości.
Weryfikacja starszych systemów
Wiele starszych systemów, rejestrów pakietów i mechanizmów aktualizacji oprogramowania nadal publikuje sumy kontrolne SHA-1 obok plików do pobrania. Generuj i porównuj skróty SHA-1 w celu weryfikacji integralności pliku, gdy skróty SHA-256 nie są dostępne.
Integralność podzasobów (SRI)
Choć sha256 i sha384 są preferowane dla skrótów SRI w tagach script i link HTML, niektóre starsze konfiguracje CDN nadal opierają się na SHA-1. Generuj oczekiwany skrót, aby audytować lub przenosić istniejące atrybuty SRI.
QA i testy regresji
Porównuj skróty SHA-1 odpowiedzi API, artefaktów kompilacji lub migawek bazy danych między przebiegami testów, aby wykryć nieoczekiwane zmiany bez wykonywania pełnego porównania bajt po bajcie dużych wyników.
Deduplikacja danych
Obliczaj skróty SHA-1 zawartości plików lub rekordów danych w potokach ETL w celu identyfikacji duplikatów. 160-bitowe wyjście zapewnia mocniejszą gwarancję unikalności niż MD5 w scenariuszach deduplikacji bez udziału przeciwnika.
Nauka i edukacja
SHA-1 to dobrze udokumentowany algorytm z obszerną literaturą naukową. Eksperymentuj z nim, aby zrozumieć konstrukcję Merkle-Damgard, harmonogramowanie komunikatów i dlaczego odporność na kolizje załamuje się, gdy długość wyjścia jest zbyt krótka w stosunku do nowoczesnej mocy obliczeniowej.

SHA-1 a inne algorytmy skrótu

SHA-1 produkuje 160-bitowy skrót — dłuższy niż MD5 (128 bitów), ale znacznie krótszy niż algorytmy z rodziny SHA-2. Poniższa tabela porównuje rozmiary skrótów, standardy i odpowiednie przypadki użycia dla każdego algorytmu.

AlgorytmRozmiar skrótuDługość hexStandardNajlepszy do
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

Jak działa SHA-1

SHA-1 stosuje konstrukcję Merkle-Damgard: komunikat jest uzupełniany, dzielony na 512-bitowe bloki, a każdy blok jest przetwarzany przez 80 rund operacji bitowych, które mieszają dane wejściowe z harmonogramem komunikatów wyprowadzonym z bloku. Pięć 32-bitowych słów stanu (H0 do H4) przechowuje bieżący stan skrótu, a końcowe połączenie tych słów daje 160-bitowy skrót.

Input: "hello world"
SHA-1: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
(160 bits = 20 bytes = 40 hex characters)
KrokOpis
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.

Kluczowa różnica między SHA-1 a MD5 to liczba słów stanu (5 w porównaniu z 4), liczba rund na blok (80 w porównaniu z 64) oraz zastosowanie harmonogramu komunikatów ze sprzężeniem zwrotnym opartym na rotacji w lewo. Różnice te dają SHA-1 większe wyjście (160 w porównaniu z 128 bitami) i pierwotnie zapewniały wyższy margines bezpieczeństwa, choć oba algorytmy są teraz uważane za złamane pod względem odporności na kolizje.

Przykłady kodu

Jak generować skróty SHA-1 w popularnych językach i środowiskach. W przeciwieństwie do MD5, SHA-1 jest dostępne w przeglądarce przez Web Crypto API, dzięki czemu można go używać bez zewnętrznych bibliotek zarówno w przeglądarce, jak i w środowisku 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

Najczęstsze pytania

Czy SHA-1 jest nadal bezpieczne w użyciu?
SHA-1 nie jest bezpieczne dla aplikacji wrażliwych na bezpieczeństwo. Atak SHAttered z 2017 roku zademonstrował praktyczne generowanie kolizji, a atak z wybranym prefiksem z 2020 roku jeszcze bardziej obniżył koszt. Do podpisów cyfrowych, certyfikatów TLS lub dowolnego scenariusza, w którym przeciwnik może tworzyć kolidujące dane wejściowe, używaj zamiast tego SHA-256 lub SHA-3. Do celów niezwiązanych z bezpieczeństwem, takich jak sumy kontrolne i klucze pamięci podręcznej, gdzie żaden przeciwnik nie kontroluje danych wejściowych, SHA-1 pozostaje funkcjonalne.
Jaka jest różnica między SHA-1 a SHA-256?
SHA-1 produkuje 160-bitowy (40-znakowy hex) skrót i jest podatne na ataki kolizji. SHA-256 produkuje 256-bitowy (64-znakowy hex) skrót i należy do rodziny SHA-2, dla której nie są znane żadne praktyczne ataki. SHA-256 jest o około 20–30% wolniejsze niż SHA-1 na tym samym sprzęcie, ale dodatkowe 96 bitów wyjścia i brak znanych słabości strukturalnych czynią go domyślną rekomendacją dla każdego nowego projektu.
Dlaczego Git używa SHA-1?
Gdy Linus Torvalds projektował Git w 2005 roku, SHA-1 był uważany za bezpieczny i oferował dobry balans między szybkością a odpornością na kolizje dla przechowywania adresowalnego treścią. Git używa SHA-1 jako identyfikatora treści, a nie mechanizmu bezpieczeństwa — wykrywa przypadkowe uszkodzenia, a nie celowe manipulacje. Od 2021 roku Git przechodzi na SHA-256 za pomocą struktury rozszerzenia skrótu opisanej w planie git-hash-function-transition.
Czy można odwrócić skrót SHA-1 z powrotem do oryginalnych danych wejściowych?
Nie. SHA-1 to funkcja jednokierunkowa, która odrzuca informacje podczas skracania. W przypadku krótkich lub powszechnych danych wejściowych atakujący mogą używać tęczowych tablic lub przeszukiwania brute-force, aby znaleźć oryginalny tekst jawny, ale nie jest to odwrócenie algorytmu — to wyczerpujące przeszukiwanie przestrzeni wejściowej. Do haseł używaj bcrypt, scrypt lub Argon2 zamiast jakiejkolwiek szybkiej funkcji skrótu.
Jak działa atak SHAttered?
Atak SHAttered wykorzystuje strukturalne słabości w funkcji kompresji SHA-1. Przez staranne konstruowanie dwóch różnych 512-bitowych bloków komunikatów, które dają ten sam pośredni stan skrótu, atakujący stworzyli dwa pliki PDF z identycznymi skrótami SHA-1, ale różną widoczną treścią. Atak wymagał około 2^63 obliczeń SHA-1 — co odpowiada około 6500 latom czasu jednego procesora, ale wykonalne na klastrze GPU w ciągu miesięcy. Koszt od tamtej pory jeszcze bardziej spadł dzięki ulepszonym technikom.
Jaka jest różnica między SHA-1 a HMAC-SHA1?
SHA-1 to zwykła funkcja skrótu: skrót = SHA1(komunikat). HMAC-SHA1 to kod uwierzytelniania komunikatów z kluczem: mac = HMAC(klucz, komunikat). HMAC opakowuje funkcję skrótu w konstrukcję, która zapobiega atakom rozszerzenia długości i wymaga tajnego klucza. Co ciekawe, HMAC-SHA1 jest nadal uważany za bezpieczny do uwierzytelniania komunikatów, mimo że SHA-1 jest złamane pod względem odporności na kolizje, ponieważ bezpieczeństwo HMAC zależy od właściwości pseudolosowej funkcji kompresji, a nie od odporności na kolizje.
Czy używać SHA-1 czy MD5 do sum kontrolnych plików?
SHA-1 jest lepszym wyborem niż MD5 do sum kontrolnych plików. MD5 produkuje 128-bitowy skrót i jest złamane od 2004 roku, a praktyczne ataki kolizji można teraz wykonać w sekundy. SHA-1 produkuje 160-bitowy skrót, a jego ataki kolizji, choć zademonstrowane, pozostają kosztowniejsze. Jednak dla każdego nowego systemu preferuj SHA-256 — zapewnia 256-bitowy skrót bez znanych praktycznych ataków i jest dobrze wspierany na wszystkich platformach i w językach programowania.