Jak generować hashe MD5, SHA-256 i inne
Hashowanie konwertuje dowolne wejście — hasło, plik, wiadomość — na ciąg o stałej długości. To samo wejście zawsze produkuje ten sam hash, ale najmniejsza zmiana wejścia produkuje całkowicie inny hash. Sprawia to, że hashowanie jest niezbędne do weryfikacji integralności, przechowywania haseł i podpisów cyfrowych.
Jak działa hashowanie
Funkcja hashująca przyjmuje wejście dowolnego rozmiaru i produkuje wyjście o stałym rozmiarze:
| Wejście | Hash SHA-256 (pierwsze 16 znaków) |
|---|---|
| hello | 2cf24dba5fb0a30e... |
| Hello | 185f8db32271fe25... |
| hello! | ce06092fb948d9ff... |
Zauważ, że pojedyncza zmiana znaku (małe h na duże H) lub dodany znak całkowicie zmienia hash. To się nazywa efektem lawinowym.
Częste algorytmy hash
| Algorytm | Długość | Status | Używać do |
|---|---|---|---|
| MD5 | 32 znaki | Złamany (niebezpieczny) | Sumy kontrolne starsze, zastosowania niezabezpieczone |
| SHA-1 | 40 znaków | Złamany (niebezpieczny) | Tylko starsze systemy |
| SHA-256 | 64 znaki | Bezpieczny | Integralność plików, podpisy cyfrowe |
| SHA-512 | 128 znaków | Bezpieczny | Aplikacje o wysokim bezpieczeństwie |
SHA-256 jest obecnym standardem dla większości zastosowań. MD5 i SHA-1 powinny być używane tylko do interakcji ze starszymi systemami, które ich wymagają.
Jak wygenerować hash
- Wybierz swój algorytm — wybierz MD5, SHA-1, SHA-256, SHA-384 lub SHA-512. Używaj SHA-256, chyba że masz konkretny powód.
- Wprowadź tekst lub prześlij plik — wpisz lub wklej tekst albo wybierz plik do zhashowania.
- Skopiuj hash — wynik to ciąg szesnastkowy używany do weryfikacji, przechowywania lub porównania.
Praktyczne zastosowania
Weryfikacja integralności pliku — pobierz plik i porównaj jego hash z opublikowanym oficjalnie. Jeśli się zgadzają, plik jest autentyczny i nieuszkodzony.
Przechowywanie haseł — aplikacje przechowują hashe haseł, a nie same hasła. Gdy się logujesz, Twoje wejście jest hashowane i porównywane z przechowywanym hashem.
Deduplikacja danych — hashuj duże pliki, aby szybko ustalić, czy są identyczne, bez porównywania ich bajt po bajcie.
HMAC dla bezpieczeństwa API — używaj HMAC (hash z tajnym kluczem), aby podpisywać żądania API i upewnić się, że nie zostały zmienione w tranzycie.
Wskazówki
- Domyślnie używaj SHA-256 — jest bezpieczny, szeroko obsługiwany i jest standardową rekomendacją dla nowych projektów.
- Nigdy nie używaj MD5 dla bezpieczeństwa — kolizje MD5 (różne wejścia produkujące ten sam hash) można generować w kilka sekund. Nadaje się do niezabezpieczonych sum kontrolnych, ale nie do tego, co liczy się dla integralności.
- Sól swoje hashe haseł — dodanie losowej soli do każdego hasła przed hashowaniem zapobiega atakom z tablicami tęczowymi. Używaj bcrypt lub Argon2 do hashowania haseł w produkcji.
- Hashowanie plików działa lokalnie — plik jest przetwarzany w Twojej przeglądarce, więc nawet duże pliki nigdy nie opuszczają Twojego urządzenia.
Najczęściej zadawane pytania
Jaka jest różnica między MD5, SHA-1 a SHA-256?
MD5 produkuje hash 128-bitowy (32 znaki hex), SHA-1 produkuje 160 bitów (40 znaków), a SHA-256 produkuje 256 bitów (64 znaki). MD5 i SHA-1 są uważane za kryptograficznie złamane. SHA-256 jest obecnie bezpieczny i zalecany do weryfikacji integralności i bezpieczeństwa.
Czy można odwrócić hash, aby odzyskać oryginalne dane?
Nie. Funkcje hash są jednokierunkowe z założenia. Nie możesz matematycznie odwrócić hasha do jego wejścia. Jednak częste hasła można znaleźć w tablicach prekomputowanych (rainbow tables), stąd znaczenie solenia haseł przed hashowaniem.
Czym jest HMAC?
HMAC (Hash-based Message Authentication Code) łączy funkcję hash z tajnym kluczem. Weryfikuje zarówno integralność, jak i autentyczność danych — udowadniając, że nie zostały zmienione i że zostały wyprodukowane przez kogoś znającego tajny klucz.
Czy moje dane są wysyłane na serwer?
Nie. Całe hashowanie działa w Twojej przeglądarce z Web Crypto API. Twoje teksty i pliki nigdy nie opuszczają Twojego urządzenia.