Algorytmy Hashujące Wyjaśnione: MD5, SHA-1, SHA-256, SHA-512
Szybka odpowiedź
MD5 i SHA-1 są złamane i nie wolno ich używać do celów wrażliwych na bezpieczeństwo. SHA-256 to obecny default dla sprawdzania integralności i podpisów. SHA-512 jest szybszy na 64-bit CPU. Użyj naszego Hash Generator aby obliczyć je w przeglądarce.
Wstęp
Kryptograficzna funkcja hash przyjmuje input dowolnego rozmiaru i produkuje digest o stałym rozmiarze, który jest deterministyczny, szybki do obliczenia, nieodwracalny, collision-resistant i avalanche-sensitive (zmiana jednego bitu zmienia roughly połowę bitów output). MD5 (128-bit), SHA-1 (160-bit), SHA-256 (256-bit) i SHA-512 (512-bit) to cztery najpowszechniejsze funkcje hash, ale ich właściwości bezpieczeństwa różnią się dramatycznie.
Krok po kroku
-
Zrozumienie właściwości funkcji skrótu
Dobry skrót kryptograficzny jest deterministyczny (to samo wejście zawsze daje ten sam wynik), wynik o stałym rozmiarze, szybki do obliczenia, niemożliwy do odwrócenia (opór obrazu wstępnego), niemożliwy do znalezienia dwóch wejść o tym samym wyjściu (odporność na kolizje) i lawinowy (niewielka zmiana wejścia odwraca ~ 50% bitów wyjściowych).
-
Poznaj rozmiary podsumowań
MD5 daje 128 bitów (32 znaki szesnastkowe). SHA-1 generuje 160 bitów (40 znaków szesnastkowych). SHA-256 daje 256 bitów (64 znaki szesnastkowe). SHA-512 generuje 512 bitów (128 znaków szesnastkowych). Dłuższe podsumowania zmniejszają prawdopodobieństwo kolizji, ale zwiększają rozmiar pamięci.
-
Dowiedz się, dlaczego MD5 i SHA-1 są uszkodzone
Badacze odkryli praktyczne ataki kolizyjne na MD5 (2004) i SHA-1 (2017, atak SHAttered). Kolizje umożliwiają atakującemu utworzenie dwóch różnych danych wejściowych przy użyciu tego samego skrótu, co może łamać podpisy cyfrowe i urzędy certyfikacji. Żadnego z nich nie należy używać ze względów bezpieczeństwa.
-
Wybierz odpowiedni algorytm
W przypadku sprawdzania integralności plików, gdzie szybkość jest ważniejsza niż bezpieczeństwo, nadal powszechne są MD5 lub SHA-1. W przypadku zastosowań wrażliwych na bezpieczeństwo (hasła, podpisy, certyfikaty, łańcuch bloków) użyj SHA-256 lub SHA-512. Do przechowywania haseł używaj powolnego KDF, takiego jak bcrypt, scrypt lub Argon2 — nigdy surowego SHA-256.
-
Oblicz i zweryfikuj skróty
Użyj generatora skrótów, aby zahaszować tekst dowolnym algorytmem, lub skrótu pliku, aby obliczyć skrót pliku lokalnego. Porównaj wynikowy skrót ze znaną, dobrą wartością, aby zweryfikować integralność — różnica jednego bitu oznacza, że plik został uszkodzony lub zmodyfikowany.
Przykłady
MD5 „cześć” (128 bitów, 32 znaki szesnastkowe)
Wejście: hello
Wyjście: 5d41402abc4b2a76b9719d911017c592
SHA-256 „cześć” (256 bitów, 64 znaki szesnastkowe)
Wejście: hello
Wyjście: 2cf24dba5fb0d30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Efekt lawinowy — zmiana jednej postaci
Wejście: cześć vs cześć
Wyjście: SHA-256('hello') zaczyna się od 2cf24dba... podczas gdy SHA-256('Hello') zaczyna od 185f8db3... —zupełnie inaczej pomimo jednobitowej zmiany wejścia
Typowe problemy
- Używanie MD5 lub SHA-1 do mieszania haseł: oba są szybkie i łamane, dzięki czemu ataki brute-force i Rainbow-table są banalne. Zamiast tego użyj bcrypt, scrypt lub Argon2.
- Mylenie mieszania z szyfrowaniem: mieszanie jest jednokierunkowe i nieodwracalne; szyfrowanie jest dwukierunkowe. Nie można „odszyfrować” skrótu — można jedynie porównywać skróty.
- Ignorowanie ataków polegających na wydłużaniu długości: MD5, SHA-1, SHA-256 i SHA-512 są podatne na ataki polegające na wydłużaniu długości, gdy są używane jako komputery MAC. Do uwierzytelniania wiadomości użyj HMAC-SHA256.
- Porównywanie skrótów za pomocą == zamiast porównania w stałym czasie: wycieki czasu pozwalają atakującym odzyskać skróty bajt po bajcie. Użyj porównania w czasie stałym w kodzie zabezpieczającym.
Porady
- Domyślnie SHA-256 dla nowych systemów — jest szybki, szeroko obsługiwany i nie ma praktycznego ataku kolizyjnego od 2026 r.
- Do przechowywania haseł użyj bcrypt ze współczynnikiem pracy 12+ (lub Argon2id z 64 MB pamięci) — nigdy surowego SHA-256, który jest zbyt szybki w stosunku do procesorów graficznych.
- Podczas sprawdzania pobrań plików porównaj nazwę algorytmu i skrót — skrót SHA-1 nie ma znaczenia, jeśli wydawca miał na myśli tylko SHA-256.
- Skorzystaj z naszego narzędzia File Hash, aby obliczyć SHA-256 dużych plików lokalnie bez przesyłania — przesyła ono strumieniowo plik przez kryptowalutę internetową API.