Kalkulator kodu skrótu CRC-32C
Opublikowano: 17 lutego 2025 18:45:08 UTC
Kalkulator kodu skrótu, który wykorzystuje funkcję skrótu CRC-32C (Cyclic Redundancy Check 32 bit, wariant C) do obliczania kodu skrótu na podstawie wprowadzonego tekstu lub przesłanego pliku.CRC-32C Hash Code Calculator
Cyclic Redundancy Check (CRC) to kod wykrywający błędy powszechnie używany do wykrywania przypadkowych zmian w surowych danych. Chociaż technicznie nie jest to kryptograficzna funkcja skrótu, CRC-32 jest często nazywany skrótem ze względu na jego zdolność do generowania wyjścia o stałym rozmiarze (32 bity) ze zmiennej długości wejścia. Wersja przedstawiona na tej stronie to wariant CRC-32C, który jest nowszą, „inteligentniejszą” (lepsze wykrywanie błędów) wersją, która jest często przyspieszana sprzętowo na nowoczesnych procesorach (za pośrednictwem SSE 4.2).
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-32C
Nie jestem matematykiem, ale spróbuję 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 OK ;-)
Wyobraź sobie, że wysyłasz list pocztą, ale obawiasz się, że może zostać uszkodzony, zanim dotrze do adresata. Na podstawie zawartości listu obliczasz sumę kontrolną CRC-32 i zapisujesz ją na kopercie. Kiedy adresat otrzyma list, 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 przesyłki.
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 w pudełku).
- 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 wypustek i rowków (to wielomian, ale nie przejmuj się tym słowem).
- Najczęściej stosowaną „linijką” dla CRC-32 jest stały wzór.
Krok 3: Przesuwanie linijki (proces dzielenia)
- Teraz CRC przesuwa linijkę wzdłuż wiadomości.
- W każdym miejscu sprawdza, czy wypustki i rowki są ze sobą zgodne.
- Jeśli nie są zgodne, CRC tworzy notatkę (można to zrobić za pomocą prostej operacji XOR, podobnej do włączania i wyłączania przełączników).
- Przesuwa się i przełącza przełączniki, aż dojdzie do końca.
Krok 4: Wynik końcowy (suma kontrolna)
- Po przesunięciu linijki przez całą wiadomość zostanie Ci niewielka liczba (o długości 32 bitów) reprezentująca oryginalne dane.
- Numer ten stanowi unikalny odcisk palca wiadomości.
- To jest suma kontrolna CRC-32.
Wersja zaprezentowana na stronie to wariant CRC-32C, który powinien być preferowanym wariantem, zwłaszcza jeśli używasz procesora z akceleracją sprzętową (SSE 4.2 i nowsze) i nie potrzebujesz kompatybilności z innymi wariantami.
Posiadam również kalkulatory dla innych wariantów: