Generator SHA-1 hash (160-bitowy, przestarzały)
Generuj hash SHA-1 online — 40-znakowy wynik hex, bez przesyłania. Narzędzie dla odcisków Git, weryfikacji starych certyfikatów i audytów migracji. Dane nie opuszczają urządzenia.
Czym jest SHA-1?
SHA-1 (Secure Hash Algorithm 1) to 160-bitowa kryptograficzna funkcja hash opublikowana przez NIST w 1995 roku jako FIPS 180-1. Została zaprojektowana przez Agencję Bezpieczeństwa Narodowego USA, aby zastąpić SHA-0 (wadliwą wcześniejszą wersję szybko wycofaną w 1993 roku) i była dominującym algorytmem hash dla podpisów cyfrowych, certyfikatów TLS i podpisywania kodu przez lata 2000.
Historia łamań: W 2005 roku zespół Xiaoyun Wang opublikował teoretyczny atak redukujący odporność SHA-1 na kolizje z oczekiwanych 2^80 do 2^63 operacji — teoretyczne złamanie, ale jeszcze niepraktyczne. W lutym 2017 roku Google i CWI Amsterdam opublikowały atak SHAttered, produkując dwa różne dokumenty PDF z identycznymi hashami SHA-1 przy użyciu około 110 GPU-lat obliczeń. Było to definitywne praktyczne złamanie. NIST wycofał już SHA-1 dla podpisów w 2011 roku (NIST SP 800-131A); producenci przeglądarek i urzędy certyfikacji zaprzestały obsługi certyfikatów SHA-1 w latach 2016–2017.
Aktualny status: SHA-1 jest przestarzały we wszystkich zastosowaniach wrażliwych z punktu widzenia bezpieczeństwa — podpisy cyfrowe, odciski certyfikatów, przechowywanie haseł i podpisywanie kodu. Utrzymuje się w formacie identyfikatorów obiektów Git (hashe commitów), gdzie jest używany do adresowania zawartości, a nie bezpieczeństwa, oraz w sumach kontrolnych starszego oprogramowania, gdzie administratorzy jeszcze nie przeprowadzili migracji. Projekt Git dodał obsługę formatu obiektów SHA-256 w wersji 2.29 (październik 2020 roku). Wszystkie nowe projekty powinny używać SHA-256 lub mocniejszego.
Narzędzie oblicza SHA-1 całkowicie w przeglądarce za pomocą crypto.subtle.digest('SHA-1', ...) z Web Crypto API. 40-znakowy wynik hex jest identyczny z tym, co produkuje sha1sum, openssl dgst -sha1 lub git hash-object. Żadne bajty nie są wysyłane na żaden serwer.
SHA-1 a rodzina SHA-2: SHA-1 produkuje 40 znaków hex (160 bitów). SHA-256 produkuje 64 znaki hex (256 bitów) i nie ma znanych słabości. MD5 produkuje 32 znaki hex (128 bitów) i był złamany wcześniej (2004). Do wszelkich nowych prac hashowania SHA-256 jest standardowym wyborem.
// 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. Przykłady SHA-1
Wyszukanie odcisku commita Git
tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 author A Dev <dev@example.com> 1716854400 +0000 committer A Dev <dev@example.com> 1716854400 +0000 Initial commit
Git przechowuje każdy commit jako obiekt blob, którego SHA-1 oblicza się z nagłówka commita i zawartości w dokładnie tym formacie. 40-znakowy ciąg hex wyświetlany przez `git log` to bezpośredni odcisk SHA-1. Wklej surowy tekst obiektu commita tutaj, aby odtworzyć ten sam hash — przydatne przy debugowaniu wyjścia `git cat-file` lub weryfikacji, że repozytorium lustrzane nie zmodyfikowało historii. Uwaga: Git 2.29+ obsługuje tryb SHA-256 (git init --object-format=sha256), a magazyn obiektów GitHub w końcu zostanie zmigrowany. W nowych repozytoriach preferuj tryb SHA-256.
Weryfikacja odcisku starszego certyfikatu TLS
-----BEGIN CERTIFICATE----- MIIDXTCCAkWgAwIBAgIJAKlL... -----END CERTIFICATE-----
Przed 2017 rokiem przeglądarki wyświetlały odciski certyfikatów jako 40-znakowe ciągi hex SHA-1. Urzędy certyfikacji przestały wystawiać certyfikaty podpisane SHA-1 w styczniu 2016 roku, a wszystkie główne przeglądarki usunęły obsługę na początku 2017 roku. Jeśli audytujesz stary wewnętrzny certyfikat lub weryfikujesz starsze urządzenie IoT, wklej treść PEM tutaj, aby odtworzyć odcisk SHA-1 do porównania. Nowoczesne przepływy pracy używają 64-znakowego odcisku SHA-256.
Weryfikacja starego pobrania oprogramowania
node-v0.12.7-linux-x64.tar.gz
Niektóre starsze archiwa oprogramowania nadal publikują wyłącznie sumę kontrolną SHA-1 obok pliku do pobrania. Choć zapewnia to podstawowe wykrywanie uszkodzeń (nie wykrywanie manipulacji), jest lepsze niż brak sumy kontrolnej. Użyj zakładki Plik, aby upuścić archiwum, oblicz SHA-1 i porównaj z wartością opublikowaną przez wydawcę. Jeśli dostępny jest również SHA-256, zawsze preferuj ten drugi. W przypadku nowych archiwów nalegalnie wymagaj sum kontrolnych SHA-256 lub SHA-512.
Demonstracja kolizji SHAttered
(Wklej zawartość pliku shattered-1.pdf firmy Google/CWI przez zakładkę Plik)
W lutym 2017 roku Google i CWI Amsterdam opublikowały atak SHAttered — pierwszą praktyczną kolizję SHA-1. Wyprodukowali dwa różne pliki PDF (shattered-1.pdf i shattered-2.pdf), które dają ten sam hash SHA-1: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a. Upuszczenie któregokolwiek z tych plików PDF do zakładki Plik narzędzia daje dokładnie ten hash, potwierdzając, że kolizja jest realna. Jest to najbardziej wyraźny dowód na to, że SHA-1 jest złamany: dwa różne dokumenty o tym samym odcisku oznaczają, że odcisk nie jest już wiarygodną tożsamością. Używaj SHA-256 we wszystkich nowych przepływach weryfikacji integralności dokumentów.
Jak generować hashe SHA-1
- 1
Wklej tekst lub upuść plik
Wybierz zakładkę Tekst i wklej dowolny ciąg — wiadomość commita, treść certyfikatu lub dane wejściowe starszej sumy kontrolnej — do obszaru wejściowego. Hash SHA-1 aktualizuje się na bieżąco podczas pisania. W przypadku plików przełącz na zakładkę Plik i przeciągnij dowolny plik do strefy upuszczania; przeglądarka hashuje go lokalnie bez żadnego przesyłania.
- 2
Skopiuj 40-znakowy hash
Kliknij przycisk Kopiuj obok wyjścia hash. Pełny 40-znakowy ciąg hex małymi literami trafia do schowka. Użyj przełącznika Wielkie litery, jeśli starszy system oczekuje wielkich liter hex — niektóre stare narzędzia i interfejsy API Windows domyślnie używają wielkich liter.
- 3
Porównaj ze starszym odciskiem
Przełącz na zakładkę Porównaj i wklej dwa hashe SHA-1 obok siebie, aby potwierdzić, że się zgadzają. Przydatne do weryfikacji starszej sumy kontrolnej wydawcy, audytowania lustrzanego repozytorium Git lub sprawdzania starego odcisku certyfikatu TLS z dokumentu sprzed przyjęcia SHA-256.
Szczegóły techniczne
- Algorytm: konstrukcja Merkle-Damgård, 80 rund
- SHA-1 przetwarza dane wejściowe w blokach 512-bitowych (64-bajtowych), stosując 80 rund operacji bitowych pogrupowanych w cztery etapy po 20 rund, każdy z inną funkcją logiczną (Ch, Parity, Maj, Parity) i stałą addytywną pochodną od pierwiastków kwadratowych małych liczb całkowitych. Początkowy stan hash to pięć 32-bitowych słów (A–E), a ostateczny hash jest konkatenacją tych słów po ostatnim bloku. Implementacja zdefiniowana w FIPS 180-1 (1995), zastąpiona przez FIPS 180-4 (2015), który formalnie zawiera język dotyczący wycofania.
- Wyjście: 160 bitów, 40 znaków hex
- Zawsze dokładnie 40 małych liter szesnastkowych (160 bitów = 20 bajtów, zakodowanych jako 2 znaki hex na bajt). Długość wyjścia jest stała niezależnie od rozmiaru wejścia. W porównaniu z 64 znakami SHA-256 krótsze wyjście zapewnia mniej bitów odporności na kolizje — kluczowy czynnik, dla którego SHA-1 został złamany przed SHA-256.
- Wydajność: szybki, ale to część problemu
- SHA-1 jest szybki — zazwyczaj 400–700 MB/s w przeglądarce przy użyciu Web Crypto, porównywalne z SHA-256. Dla atakującego ta szybkość jest atutem: nowoczesny klaster GPU może obliczać miliardy hashy SHA-1 na sekundę, przyspieszając wyszukiwanie metodą brute-force i kolizji. Szybkość jest powodem, dla którego SHA-1 (podobnie jak MD5) nigdy nie może być używany do przechowywania haseł — zamiast tego używaj bcrypt, scrypt lub Argon2.
- Standardy: FIPS 180-1 (1995) — przestarzały w kontekście FIPS 180-4
- SHA-1 został wystandaryzowany w FIPS 180-1 (1995), zastępując wadliwy SHA-0. NIST wycofał SHA-1 dla podpisów cyfrowych w NIST SP 800-131A (2011) i w FIPS 186-5 (2023) formalnie zakazał go dla wszystkich generowanych podpisów cyfrowych. RFC 6194 (2011) dokumentuje znane kwestie bezpieczeństwa. W3C WebCrypto API nadal zawiera SHA-1 ze względów interoperacyjności ze starszymi systemami, co umożliwia temu narzędziu przeglądarkowemu jego obliczanie.
Najlepsze praktyki
- Nigdy nie używaj SHA-1 do operacji wrażliwych z punktu widzenia bezpieczeństwa
- SHA-1 jest przestarzały dla podpisów cyfrowych, certyfikatów TLS, podpisywania kodu, przechowywania haseł i każdego przepływu pracy, w którym liczy się odporność na kolizje. Atak SHAttered z 2017 roku zademonstrował praktyczne kolizje. Do wszystkich zastosowań bezpieczeństwa migruj do SHA-256 lub SHA-3. Różnica kosztów jest znikoma na nowoczesnym sprzęcie — SHA-256 jest akcelerowany sprzętowo we wszystkich aktualnych procesorach i potokach GPU.
- SHA-1 do wyszukiwania starszych odcisków jest akceptowalny
- Jeśli musisz zweryfikować sumę kontrolną pliku sprzed 2017 roku, wyszukać identyfikator commita Git lub zbadać stary odcisk certyfikatu do celów audytowych, SHA-1 jest odpowiedni. Sam hash nie jest używany do podejmowania decyzji o zaufaniu — po prostu odtwarzasz znany odcisk do krzyżowego odniesienia. Udokumentuj to explicite w dziennikach audytu: „SHA-1 użyty wyłącznie do celów odniesienia do starszych systemów, nie do weryfikacji bezpieczeństwa”.
- Zawsze hashuj bajty UTF-8, nie punkty kodu Unicode
- SHA-1, jak wszystkie algorytmy hash, działa na bajtach, nie na znakach. Ten sam ciąg zakodowany jako UTF-8 vs UTF-16 produkuje różne hashe. Narzędzie zawsze koduje dane wejściowe jako UTF-8 bez BOM przed hashowaniem. Jeśli chcesz dopasować system używający innego kodowania (Windows UTF-16-LE, Latin-1), musisz wstępnie zakodować dane wejściowe zewnętrznie przed porównaniem hashy.
- Używaj porównania w stałym czasie podczas weryfikacji hashy w kodzie
- Jeśli porównujesz dwa hashe SHA-1 w kodzie, użyj sprawdzania równości w stałym czasie —
crypto.timingSafeEqual()w Node.js,hmac.compare_digest()w Pythonie — zamiast naiwnej równości ciągów (=== lub ==). Naiwne porównanie ujawnia informacje o czasie, które teoretycznie mogą pozwolić atakującemu na odtworzenie oczekiwanego hasha bajt po bajcie. Jest to środek ochrony głębokiej nawet dla starszej weryfikacji SHA-1.
Najczęściej zadawane pytania
Czy SHA-1 jest nadal bezpieczny w użyciu?
Dlaczego Git nadal używa SHA-1?
--object-format=sha256. GitHub i duże serwisy stopniowo wdrażają tryb SHA-256. Istniejące repozytoria można konwertować, ale migracja jest złożona ze względu na miliardy istniejących identyfikatorów commitów. Na razie identyfikatory commitów SHA-1 pozostają sposobem przechowywania większości historii Git, co czyni to narzędzie użytecznym do krzyżowego sprawdzania hashy obiektów commit. Czy powinienem migrować z SHA-1 na SHA-256?
Czym był atak SHAttered?
Czy kolizje SHA-1 mogą zdarzyć się przypadkowo?
Czy SHA-1 nadaje się do zastosowań niezwiązanych z bezpieczeństwem, jak sumy kontrolne?
Jak długi jest hash SHA-1?
Czy moje dane wejściowe są wysyłane na jakiś serwer?
crypto.subtle.digest('SHA-1', data)). Otwórz Narzędzia deweloperskie → zakładka Sieć podczas hashowania — zobaczysz zero wychodzących żądań. Pliki upuszczone w trybie Plik są odczytywane przez FileReader API i hashowane lokalnie; bajty nigdy nie opuszczają maszyny. Sprawia to, że narzędzie jest bezpieczne do hashowania poufnych dokumentów, starszych certyfikatów lub odcisków własnościowego kodu źródłowego. Ta sama gwarancja prywatności dotyczy generatora SHA-256. Dlaczego moje wyjście SHA-1 różni się od sha1sum w wierszu polecenia?
echo 'hello' | sha1sum zawiera znak nowej linii (\n) po "hello", więc hashuje "hello\n", a nie "hello". Użyj echo -n 'hello' | sha1sum lub printf '%s' 'hello' | sha1sum, aby go usunąć. Inne częste przyczyny: końce wierszy Windows (\r\n vs \n), BOM UTF-8 na początku pliku lub różnice w kodowaniu (UTF-8 vs Latin-1). Narzędzie koduje dane wejściowe jako UTF-8 bez BOM przed hashowaniem. Powiązane narzędzia
Zobacz wszystkie narzędzia →Dekoder JWT
Narzędzia bezpieczeństwa
Dekoduj JWT online darmowym dekoderem JWT. Sprawdź header, payload, signature, claims i wygaśnięcie. W 100% w przeglądarce — token nie opuszcza urządzenia.
Generator MD5 hash i sum kontrolnych plików
Narzędzia bezpieczeństwa
Generuj hashe MD5, SHA-256, SHA-1 oraz SHA-512 online za darmo. Hashuj tekst lub pliki w przeglądarce, weryfikuj sumy kontrolne i kopiuj wyniki. Bez rejestracji.
Generator haseł — konfigurowalny, silny i bezpieczny
Narzędzia bezpieczeństwa
Wygeneruj silne losowe hasła natychmiast — za darmo, w 100% w przeglądarce. Dostosuj długość i znaki, partia do 50 z analizą entropii.
Generator SHA-256 hash i sum kontrolnych
Narzędzia bezpieczeństwa
Generuj hashe SHA-256 online za darmo. Hashuj tekst lub pliki w przeglądarce, weryfikuj sumy kontrolne, kopiuj 64-znakowy wynik hex. Bez rejestracji — dane nie opuszczają strony.
Generator SHA-3 hash (Keccak SHA3-256)
Narzędzia bezpieczeństwa
Generuj hashe SHA-3 online za darmo. Konstrukcja gąbki NIST FIPS 202 — standard po SHA-2. Wyjście SHA3-256 w 64 znakach hex. Tylko przeglądarka przez lazy-loaded js-sha3; zero przesyłania.
Generator SHA-384 hash (TLS Suite B)
Narzędzia bezpieczeństwa
Generuj hashe SHA-384 online — 96-znakowy wynik hex, odporny na ataki rozszerzenia długości, zgodny z NSA Suite B. Parowany z AES-256-GCM w TLS. Całe hashowanie w przeglądarce przez Web Crypto API.