Kalkulator kodu skrótu CRC-32B
Opublikowano: 17 lutego 2025 18:29:34 UTC
Ostatnia aktualizacja: 12 stycznia 2026 09:15:58 UTC
CRC-32B Hash Code Calculator
Cykliczna kontrola nadmiarowa (CRC) to kod detekcji błędów powszechnie używany do wykrywania przypadkowych zmian w surowych danych. Chociaż technicznie rzecz biorąc, CRC-32 nie jest kryptograficzną funkcją skrótu, jest często nazywany skrótem ze względu na możliwość generowania danych wyjściowych o stałym rozmiarze (32 bity) z danych wejściowych o zmiennej długości. Wersja przedstawiona na tej stronie to wariant CRC-32B, który jest w rzeczywistości jedynie osobliwością języka PHP, polegającą na odwracaniu bitów (little-endian kontra big-endian w oryginalnym CRC-32).
Pełne ujawnienie: nie napisałem konkretnej implementacji funkcji hash używanej na tej stronie. Jest to standardowa funkcja dołączona do języka programowania PHP. Stworzyłem jedynie interfejs sieciowy, aby udostępnić go tutaj publicznie dla wygody.
O algorytmie skrótu CRC-32B
Nie jestem matematykiem, ale postaram się wyjaśnić tę funkcję skrótu za pomocą prostej analogii. W przeciwieństwie do wielu kryptograficznych funkcji skrótu, nie jest to szczególnie skomplikowany algorytm, więc prawdopodobnie będzie w porządku ;-)
Wyobraź sobie, że wysyłasz list pocztą, ale obawiasz się, że ulegnie uszkodzeniu, zanim dotrze do adresata. Na podstawie zawartości listu obliczasz sumę kontrolną CRC-32 i zapisujesz ją na kopercie. Po otrzymaniu listu odbiorca może również obliczyć sumę kontrolną i sprawdzić, czy zgadza się z tym, co napisałeś. Jeśli tak, list nie został uszkodzony ani zmieniony w trakcie transportu.
Proces CRC-32 składa się z czterech etapów:
Krok 1: Dodaj trochę dodatkowej przestrzeni (wypełnienie)
- CRC dodaje odrobinę miejsca na końcu wiadomości (jak pakowanie orzeszków ziemnych do pudełka).
- Dzięki temu łatwiej jest wykrywać błędy.
Krok 2: Magiczna linijka (wielomian)
- CRC-32 wykorzystuje specjalną „magiczną linijkę” do pomiaru danych. Wyobraź sobie tę linijkę jako wzór wypukłości i rowków (to wielomian, ale nie przejmuj się tym słowem). Najczęściej stosowaną „linijką” w przypadku CRC-32 jest stały wzór.
Krok 3: Przesuwanie linijki (proces dzielenia)
- Teraz CRC przesuwa linijkę po wiadomości. W każdym miejscu sprawdza, czy wypustki i rowki są wyrównane. Jeśli nie, CRC tworzy notatkę (odbywa się to za pomocą prostej operacji XOR, podobnej do włączania i wyłączania przełączników). Przesuwa linijkę i przełącza przełączniki, aż dotrze do końca.
Krok 4: Wynik końcowy (suma kontrolna)
- Po przesunięciu linijki wzdłuż całej wiadomości otrzymasz niewielką liczbę (o długości 32 bitów), która reprezentuje oryginalne dane. Liczba ta stanowi swego rodzaju unikalny odcisk palca wiadomości. Jest to suma kontrolna CRC-32.
Wersja prezentowana na stronie to wariant CRC-32B, który jest głównie dziwactwem PHP, polegającym na zamianie kolejności bitów (little-endian vs big-endian). Powinieneś używać tej wersji tylko wtedy, gdy potrzebujesz kompatybilności z inną aplikacją PHP, która jej używa.
Posiadam również kalkulatory dla pozostałych wariantów:
- Połączyć
- Połączyć
Dalsza lektura
Jeśli podobał Ci się ten wpis, mogą Cię zainteresować również poniższe sugestie:
- Kalkulator kodu skrótu HAVAL-256/5
- Kalkulator kodu skrótu SHA3-224
- Kalkulator kodu skrótu Fowler-Noll-Vo FNV1-64
