Co to jest suma kontrolna?
Suma kontrolna (checksum) to krótka wartość obliczana z bloku danych, na przykład pliku albo pakietu sieciowego, i zapisywana lub wysyłana razem z nim. Ponowne obliczenie jej później i porównanie obu wartości pokazuje, czy dane zmieniły się przez uszkodzenie albo błąd transmisji.
Aktualizacja: 24 września 2026
| Suma kontrolna | Wysłano | Otrzymano | Wynik |
|---|---|---|---|
| Suma bajtów (mod 256) | 9E | 9E | Zgodne |
| CRC-32 | 92823EA1 | 92823EA1 | Zgodne |
Odwróć jeden bit, a obie sumy kontrolne się zmienią. Zamień dwa znaki, a wszystkie bajty nadal są na miejscu, więc ich suma jest taka sama: zauważy to tylko CRC-32, które zależy od kolejności.
Dystrybucje Linuksa, takie jak Ubuntu i Debian, publikują obok obrazów instalacyjnych plik o nazwie SHA256SUMS. Każda linia zawiera 64-znakowy ciąg i nazwę pliku. Po zakończeniu pobierania uruchamiasz jedno polecenie na otrzymanym pliku. Jeśli wypisze ten sam ciąg, wszystkie miliardy bajtów dotarły nienaruszone. Jeśli po drodze odwrócił się choćby jeden bit, ciąg wychodzi zupełnie inny.
Ten ciąg to suma kontrolna: małe podsumowanie, które zmienia się, gdy zmieniają się dane.
Jak działa suma kontrolna krok po kroku
- Nadawca uruchamia algorytm sumy kontrolnej na danych, bajt po bajcie, i dostaje krótki wynik.
- Wynik podróżuje albo jest przechowywany razem z danymi: w nagłówku pakietu sieciowego, w pliku ZIP obok każdego skompresowanego pliku albo na stronie pobierania.
- Odbiorca uruchamia ten sam algorytm na danych, które faktycznie dostał.
- Oba wyniki są porównywane. Jeśli są równe, dane niemal na pewno się nie zmieniły. Jeśli się różnią, dane zostały uszkodzone, a odbiorca je odrzuca, prosi o nie ponownie albo pokazuje błąd sumy kontrolnej.
Suma kontrolna tylko wykrywa uszkodzenie; nie powie, który bajt się zmienił, i go nie naprawi. Do naprawy potrzebny jest kod korekcji błędów, taki jak kody Reeda-Solomona na płytach CD i w kodach QR.
Najprostsza suma kontrolna dodaje wszystkie bajty i zachowuje ostatnie 8 bitów wyniku. Uruchom ten kod, żeby zobaczyć, gdzie ten pomysł działa, a gdzie zawodzi:
original sum= 78 crc32=a1628836
flipped sum= 80 crc32=a597580b
swapped sum= 78 crc32=59dbf74b
Zmiana znaku zmienia sumę. Zamiana dwóch znaków miejscami już nie, bo dodawanie nie zwraca uwagi na kolejność, więc suma bajtów zatwierdza płatność 10 zamiast 100. CRC-32 (cykliczny kod nadmiarowy) traktuje dane jak jedną długą liczbę dwójkową i dzieli ją przez stały 33-bitowy wielomian; 32-bitowa reszta zależy od położenia każdego bitu, więc zamiana zostaje wykryta. Demo powyżej pozwala wypróbować to na własnym tekście. CRC-32 wykrywa każdą serię błędów o długości do 32 bitów.
Popularne algorytmy sum kontrolnych
| Algorytm | Rozmiar | Gdzie go spotkasz |
|---|---|---|
| Bit parzystości | 1 bit | Połączenia szeregowe, pamięć z kontrolą parzystości |
| Cyfra kontrolna Luhna | 1 cyfra | Numery kart płatniczych, numery IMEI |
| Suma kontrolna internetu | 16 bitów | Nagłówki IPv4, TCP i UDP |
| Adler-32 | 32 bity | Format kompresji zlib |
| CRC-32 | 32 bity | ZIP, gzip, PNG, ramki Ethernet |
| MD5 | 128 bitów | Starsze strony pobierania, wyszukiwarki duplikatów plików |
| SHA-256 | 256 bitów | Pobieranie oprogramowania, obrazy Linuksa, Bitcoin |
Pierwszych pięć wykrywa przypadkowe błędy, nie ataki. Ktoś, kto edytuje plik, może dopasować kilka bajtów tak, żeby jego CRC-32 znowu się zgadzało. MD5 i SHA-256 to kryptograficzne funkcje skrótu, zaprojektowane tak, żeby znalezienie dwóch danych wejściowych o tym samym wyniku było niewykonalne w praktyce. MD5 zostało jednak złamane (kolizje opublikowano w 2004 roku), podobnie jak SHA-1 (2017), więc przy pobieraniu, gdzie liczy się bezpieczeństwo, używa się SHA-256 albo silniejszych algorytmów. MD5 nadal świetnie wyłapuje przypadkowe uszkodzenia.
Jak sprawdzić sumę kontrolną
Na twoim komputerze każdy system operacyjny ma wbudowane polecenie:
# Windows (PowerShell)
Get-FileHash ubuntu.iso -Algorithm SHA256
# macOS
shasum -a 256 ubuntu.iso
# Linux
sha256sum ubuntu.iso
Porównaj wynik z wartością na oficjalnej stronie pobierania; wielkie i małe litery nie mają znaczenia. W Pythonie to samo sprawdzenie robi hashlib, czytając plik po kawałku, więc plik 6 GB nigdy nie musi zmieścić się w pamięci:
a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447
OK
Zmień hello world na hello World i uruchom kod jeszcze raz: zmieni się każdy znak sumy kontrolnej, a ostatnia linia pokaże Checksum mismatch.
Co oznacza błąd sumy kontrolnej?
Błąd sumy kontrolnej (checksum error) oznacza, że sprawdzenie się nie powiodło: wartość obliczona z danych, które masz, nie zgadza się z wartością zapisaną lub wysłaną razem z nimi. Albo zmieniły się dane, albo uszkodzona jest zapisana suma kontrolna. Komunikat i sposób naprawy zależą od miejsca, w którym błąd się pojawia.
Błąd sumy kontrolnej CMOS lub BIOS przy starcie
Firmware komputera (BIOS lub UEFI) przechowuje swoje ustawienia, takie jak kolejność rozruchu i zegar, w małej pamięci podtrzymywanej przez baterię w kształcie pastylki, zwykle CR2032, gdy komputer jest odłączony od prądu. Obok ustawień zapisana jest ich suma kontrolna. Przy każdym starcie firmware oblicza ją od nowa, a jeśli wartości się różnią, pokazuje komunikat taki jak CMOS Checksum Error - Defaults Loaded i wraca do ustawień fabrycznych.
Najczęstszą przyczyną jest słaba lub rozładowana bateria, zwłaszcza gdy zegar też się resetuje. Zanik zasilania podczas zapisywania ustawień albo wyczyszczenie CMOS zworką daje ten sam efekt. Jak to naprawić:
- Otwórz ekran ustawień (zwykle Delete albo F2 podczas uruchamiania komputera), ustaw datę, godzinę i wszystkie zmienione wcześniej ustawienia, a potem zapisz i wyjdź (często F10). Jeśli komunikat się nie powtarza, było to jednorazowe zdarzenie.
- Jeśli wraca po każdym zimnym starcie, wyłącz komputer, odłącz go od prądu i wymień baterię CR2032.
- Jeśli komunikat wskazuje na sam firmware, na przykład
BIOS ROM checksum erroralboMain BIOS checksum error, obraz firmware'u jest uszkodzony. Płyty z zapasowym układem BIOS przywracają go automatycznie; w pozostałych użyj funkcji odzyskiwania BIOS-u na płycie albo wgraj firmware ponownie ze strony producenta, nie odcinając zasilania w trakcie aktualizacji.
Niezgodność sumy kontrolnej po pobraniu pliku
SHA-256 twojego pliku nie zgadza się z wartością na stronie pobierania. Plik może być niekompletny albo uszkodzony (przerwane połączenie, pełny dysk), możesz porównywać go z sumą kontrolną innego pliku (innej wersji albo architektury procesora) albo porównujesz dwa różne algorytmy: wartość MD5 ma 32 znaki szesnastkowe, a wartość SHA-256 ma ich 64. Rzadko zdarza się, że plik został podmieniony.
Sprawdź algorytm i nazwę pliku, a potem pobierz plik jeszcze raz z oficjalnej strony. Jeśli świeża kopia z oficjalnego źródła nadal się nie zgadza, nie uruchamiaj jej. Menedżery pakietów robią to sprawdzenie za ciebie: pip zatrzymuje się z komunikatem THESE PACKAGES DO NOT MATCH THE HASHES, gdy pobrany pakiet różni się od przypiętego skrótu.
Błąd sumy kontrolnej w archiwum ZIP, RAR lub 7z
Formaty archiwów przechowują CRC-32 oryginalnej zawartości każdego pliku. Przy rozpakowywaniu narzędzie oblicza ją ponownie; WinRAR zgłasza niezgodność jako Checksum error, a 7-Zip jako CRC Failed. W zaszyfrowanym archiwum złe hasło daje ten sam komunikat, bo złe hasło odszyfrowuje dane do postaci śmieci. Pobierz archiwum jeszcze raz, upewnij się, że masz każdą część archiwum dzielonego (.part1.rar, .part2.rar) i że wszystkie pochodzą z tego samego wysłania, a potem wpisz hasło ponownie. Polecenie Repair archive w WinRAR działa najlepiej na archiwach utworzonych z rekordem odzyskiwania, a opcja "Keep broken files" zachowuje wszystko, co udało się poprawnie rozpakować.
Błędy sumy kontrolnej w grach i narzędziach sieciowych
Gry porównują sumy kontrolne swoich plików, więc częściowa aktualizacja albo zmieniony plik nie przechodzą sprawdzenia. W Steamie opcja "Verify integrity of game files" pobiera ponownie każdy plik, którego suma kontrolna się nie zgadza. W Wiresharku ostrzeżenia o sumach kontrolnych w pakietach wysyłanych przez twój własny komputer zwykle nie są prawdziwymi błędami: karta sieciowa uzupełnia sumę kontrolną dopiero po tym, jak Wireshark przechwycił pakiet.
Częste nieporozumienia
- "Zgodna suma kontrolna dowodzi, że plik jest bezpieczny." Dowodzi, że plik zgadza się z opublikowaną wartością. Jeśli atakujący kontroluje stronę, może zmienić jedno i drugie, dlatego projekty dodatkowo podpisują swoje pliki z sumami kontrolnymi kluczem.
- "Suma kontrolna może naprawić uszkodzony plik." Ona tylko wykrywa uszkodzenie. Naprawą jest zdobycie dobrej kopii.
- "Suma kontrolna i skrót (hash) to różne rzeczy." Suma kontrolna to nazwa zadania, a funkcja skrótu taka jak SHA-256 to jedno z narzędzi, które je wykonują.
Co dalej
Wartości MD5, SHA-1 i SHA-256 dowolnego tekstu obliczysz w generatorze hashy. Sumy kontrolne działają na surowych danych, więc strony co to jest bajt i co to jest bit wyjaśniają, co właściwie jest sumowane. Baza danych używa sum kontrolnych stron, żeby wykrywać uszkodzenia dysku, a wizualizacja tablicy mieszającej pokazuje inne zastosowanie krótkiej wartości obliczanej z danych.
Najczęściej zadawane pytania
Czy SHA-256 to suma kontrolna?
Jak naprawić błąd sumy kontrolnej?
Co powoduje błąd sumy kontrolnej?
Po co potrzebna jest suma kontrolna?
Jak wygenerować sumę kontrolną?
sha256sum file w Linuksie, shasum -a 256 file w macOS albo Get-FileHash file w PowerShellu w Windowsie. W Pythonie hashlib.sha256(data).hexdigest() daje sumę kontrolną SHA-256, a zlib.crc32(data) daje CRC-32.