Kalkulator kodu skrótu CRC-32C
Opublikowano: 17 lutego 2025 18:45:08 UTC
Ostatnia aktualizacja: 12 stycznia 2026 11:37:27 UTC
CRC-32C 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 jego zdolność do generowania danych wyjściowych o stałym rozmiarze (32 bity) z danych wejściowych o zmiennej długości. Wersja prezentowana na tej stronie to wariant CRC-32C, który jest nowszą, „inteligentniejszą” (lepiej wykrywającą błędy) wersją, często akcelerowaną sprzętowo na nowoczesnych procesorach (za pomocą 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 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 zaprezentowana na stronie to wariant CRC-32C, który powinien być preferowaną wersją, zwłaszcza jeśli używasz procesora z akceleracją sprzętową (SSE 4.2 i nowsze) i nie potrzebujesz kompatybilności z innymi wersjami.
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:
