Generator skrótów SHA1

SHA-1 tworzy 160-bitowy skrót (40 znaków szesnastkowych) i stoi za identyfikatorami obiektów git, starszymi sumami kontrolnymi SVN oraz całą masą systemów podpisu sprzed 2017 roku. Wklej dowolny tekst, a otrzymasz deterministyczny skrót. Ważne zastrzeżenie na start: SHA-1 jest złamany pod kątem odporności na kolizje (SHAttered, 2017) i nie wolno go używać do nowych podpisów ani do przechowywania haseł, nadaje się tylko do kontroli integralności bez przeciwnika.

Jak wyliczyć skrót SHA-1

  1. 1

    Wklej dane wejściowe

    Dowolny tekst: ciąg znaków, cały plik zrzucony do tekstu albo sekwencja szesnastkowa.

  2. 2

    Kodowanie to UTF-8

    Dane wejściowe są serializowane jako bajty UTF-8 przed haszowaniem, zgodnie z domyślnym ustawieniem w OpenSSL, Python hashlib i Node crypto.

  3. 3

    Działa pętla Merkle-Damgård

    Wiadomość jest dopełniana, dzielona na bloki 512-bitowe i przepuszczana przez funkcję kompresji SHA-1 w 80 rundach na blok.

  4. 4

    Skopiuj 40-znakowy skrót szesnastkowy

    Wynik to zawsze 40 małych znaków szesnastkowych (160 bitów).

SHA-1 w skrócie

Właściwość Wartość
Rozmiar wyniku 160 bitów / 40 znaków hex
Rozmiar bloku 512 bitów
Rundy 80
Odporność na kolizje Złamana (2^63 wybrany prefiks)
Odporność na preimage Nienaruszona (w chwili pisania)
Szybkość ~500 MB/s na jednym nowoczesnym rdzeniu

Gdzie SHA-1 jest nadal akceptowalny

  • Git. Identyfikatory commitów i blobów to SHA-1 (z SHA-256 jako opcją). Kolizje pomyliłyby historię, ale nie pozwalają sfałszować commita bez klucza autora.
  • Deduplikacja bez bezpieczeństwa. Adresowanie treści w magazynie obiektów, gdzie model zagrożeń nie obejmuje atakującego.
  • API zgodne wstecz. Starsze webhooki, takie jak X-Hub-Signature GitHuba (v1).
  • Identyfikatory śledcze. Odciski plików do deduplikacji w obrębie archiwum.

Gdzie SHA-1 jest nieakceptowalny

  • Certyfikaty TLS. Przeglądarki przestały ufać certyfikatom SHA-1 od 2017 roku.
  • Podpisywanie kodu. Microsoft, Apple i Mozilla odrzuciły podpisy SHA-1.
  • Haszowanie haseł. Użyj Argon2id albo bcrypt.
  • HMAC w nowym projekcie. Użyj co najmniej HMAC-SHA-256.

Jeśli chcesz zweryfikować wynik

Porównaj z echo -n "hello" | sha1sum na dowolnym systemie Unix. Skrót dla ciągu hello to aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d.

Najczęściej zadawane pytania

Matematycznie nie. Dla typowych krótkich danych wejściowych atakujący z gotowym słownikiem rozpozna je natychmiast, dlatego same skróty nie chronią haseł. Dla 40-znakowego losowego ciągu nie istnieje praktyczne odwrócenie.

Nie. SHA (Secure Hash Algorithm) to rodzina opublikowana przez NIST. SHA-1 to 160-bitowy algorytm z 1995 roku. SHA-2 to rodzina obejmująca SHA-224, SHA-256, SHA-384 i SHA-512.

Ze względu na zgodność z ponad dekadą historii. Od 2017 roku git zabezpiecza się przed kolizjami wybranego prefiksu (SHA-1DC) i obsługuje repozytoria SHA-256 dla nowych projektów.

Na naszym serwerze. Twój tekst jest wysyłany przez szyfrowane połączenie, haszowany standardową funkcją SHA-1, a 40-znakowy skrót jest zwracany. Nie przechowujemy przesłanego tekstu. Ponieważ SHA-1 jest funkcją jednokierunkową, samego skrótu nie da się z powrotem zamienić na Twoje dane wejściowe.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach