RevealTheme logo

Generator skrótów (MD5 / SHA)

Generuj skróty kryptograficzne: MD5, SHA-1, SHA-256, SHA-384 i SHA-512. Działa w Twojej przeglądarce za pomocą Web Crypto API.

Czym są skróty kryptograficzne i kiedy ich potrzebujesz?

Kryptograficzna funkcja skrótu to deterministyczny algorytm, który zamienia dowolne dane wejściowe (kilka bajtów, plik o rozmiarze wielu gigabajtów lub całą angielską Wikipedię) na wynik o stałym rozmiarze zwany „skrótem” (digest) lub „hashem”. SHA-256 produkuje 256 bitów (64 znaki szesnastkowe); SHA-512 produkuje 512 bitów; MD5 produkuje 128 bitów. Cztery właściwości definiują skrót „kryptograficzny”, w odróżnieniu od niekryptograficznego (takiego jak CRC32): determinizm (te same dane wejściowe → ten sam skrót, zawsze), efekt lawinowy (zmiana jednego bitu zmienia około połowy bitów wyjściowych), odporność na odwrócenie obrazu (nie możesz odwrócić skrótu, aby odzyskać dane wejściowe) oraz odporność na kolizje (nie możesz znaleźć dwóch danych wejściowych, które dają ten sam skrót). Gdy funkcja skrótu zostaje złamana, zwykle upadają te dwie ostatnie właściwości: ataki kolizyjne na MD5 (2004) i SHA-1 (2017) sprawiły, że stały się nieodpowiednie do celów bezpieczeństwa, choć nadal nadają się do nieadwersaryjnych kontroli integralności, takich jak sumy kontrolne plików. Do każdej nowej pracy związanej z bezpieczeństwem używaj SHA-256 lub SHA-512. To narzędzie używa przeglądarkowego Web Crypto API (crypto.subtle.digest), przyspieszanego sprzętowo na nowoczesnych urządzeniach, i produkuje wynik identyczny bajt po bajcie z OpenSSL, modułem hashlib w Pythonie oraz modułem crypto w Node.

Typowe przypadki użycia

  • Sprawdź, czy pobrany plik odpowiada wartości SHA-256 podanej przez wydawcę (obrazy ISO Linuksa, wydania narzędzi bezpieczeństwa).

  • Wygeneruj identyfikator adresowany treścią dla kluczy pamięci podręcznej (skrót treści → stabilny adres URL).

  • Utwórz klucz deduplikacji do przechowywania plików (zgodny skrót = identyczny plik).

  • Zbuduj weryfikację podpisu webhooka – HMAC-SHA256 ładunku ze współdzielonym sekretem.

  • Generuj skróty treści w stylu Git (SHA-1 dla identyfikatorów drzew/blobów).

  • Zweryfikuj integralność wiersza bazy danych, hashując kluczowe kolumny i przechowując skrót.

Najczęściej zadawane pytania

Dlaczego MD5 jest przestarzały dla bezpieczeństwa?
Kryptografowie znaleźli sposoby na skonstruowanie dwóch różnych danych wejściowych, które dają ten sam skrót MD5. Gdy kolizje stają się możliwe do znalezienia, MD5 przestaje być wiarygodnym sygnałem integralności w scenariuszach adwersaryjnych (ktoś mógłby podmienić plik i wygenerować inny o tym samym skrócie). W przypadku nieadwersaryjnych sum kontrolnych (czy plik pobrał się poprawnie?) MD5 nadal działa dobrze; jest niebezpieczny jedynie w przypadku podpisów cyfrowych lub czegokolwiek, na co może wpłynąć atakujący.
Czy można odwrócić skróty?
Nie bezpośrednio: skróty kryptograficzne to funkcje jednokierunkowe. Ale: (1) w przypadku krótkich danych wejściowych lub danych o niskiej entropii (hasła, popularne frazy) atakujący może wcześniej obliczyć skróty każdego prawdopodobnego wejścia (tęczowe tablice) i wyszukać Twój. Dlatego haszowanie haseł używa losowych, unikalnych soli. (2) W przypadku danych wejściowych o dowolnej długości i wysokiej entropii (losowe klucze, zawartość plików) odwrócenie jest obliczeniowo niewykonalne.
Jaka jest różnica między SHA-256 a HMAC-SHA256?
SHA-256 to zwykły skrót: każdy, kto ma dane wejściowe, może obliczyć ten sam skrót. HMAC-SHA256 to skrót z kluczem: do jego obliczenia potrzebujesz udostępnionego sekretu. Webhooki używają HMAC, ponieważ weryfikujący chce wiedzieć „czy stworzył to ktoś, kto zna sekret?”, a nie tylko „czy ładunek zgadza się ze znaną wartością?”. Do wariantu z kluczem użyj naszego generatora HMAC.
Kiedy powinienem używać SHA-512 zamiast SHA-256?
SHA-512 ma więcej bitów wyjściowych (512 wobec 256), co teoretycznie utrudnia ataki kolizyjne. Ale SHA-256 jest już bezpieczny daleko poza jakimkolwiek rozsądnym horyzontem czasowym (efektywna siła wobec kolizji wynosząca 2^128). SHA-512 bywa czasem szybszy na sprzęcie 64-bitowym ze względu na szersze operacje wewnętrzne. Domyślnie używaj SHA-256; używaj SHA-512, jeśli masz konkretny powód.
Dlaczego mój skrót SHA różni się od skrótu z innego narzędzia?
Trzy prawdopodobne przyczyny: (1) Inne kodowanie danych wejściowych: bajty, do których stosowany jest skrót, muszą się zgadzać. UTF-8, UTF-16 lub Latin-1 dają różne skróty dla tego samego widocznego tekstu. To narzędzie koduje dane wejściowe jako UTF-8. (2) Końcowy znak nowej linii: niektóre narzędzia dodają znak nowej linii, a inne nie. (3) BOM (znacznik kolejności bajtów): ukryty trzybajtowy przedrostek, który niektóre edytory dodają do plików UTF-8.
Czy korzystanie z niego z danymi wrażliwymi jest bezpieczne?
Tak: obliczanie skrótu odbywa się lokalnie w Twojej przeglądarce za pomocą Web Crypto. Dane wejściowe nigdy nie opuszczają Twojego urządzenia. Same skróty nie są „wrażliwe” w tym sensie, że nie ujawniają danych wejściowych (przy założeniu wystarczającej entropii), ale jeśli obliczasz skrót danych o niskiej entropii (takich jak hasła bez soli), pamiętaj, że każdy, kto zobaczy skrót, mógłby go odwrócić za pomocą tęczowych tablic.

Powiązane narzędzia