Miklix

Kalkulator kodu skrótu CRC-32B

Opublikowano: 17 lutego 2025 18:29:34 UTC

Kalkulator kodu skrótu, który wykorzystuje funkcję skrótu CRC-32B (Cyclic Redundancy Check 32 bit, wariant B) do obliczania kodu skrótu na podstawie wprowadzonego tekstu lub przesłanego pliku.

Ta strona została przetłumaczona maszynowo z języka angielskiego, aby była dostępna dla jak największej liczby osób. Niestety, tłumaczenie maszynowe nie jest jeszcze dopracowaną technologią, więc mogą wystąpić błędy. Jeśli wolisz, możesz wyświetlić oryginalną angielską wersję tutaj:

CRC-32B 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-32B, który jest tak naprawdę tylko dziwactwem w języku PHP, który odwraca bity (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.


Obliczanie nowego kodu skrótu

Dane przesłane lub pliki przesłane za pośrednictwem tego formularza będą przechowywane na serwerze tylko tak długo, jak będzie to konieczne do wygenerowania żądanego kodu skrótu. Zostaną one usunięte bezpośrednio przed zwróceniem wyniku do przeglądarki użytkownika.

Dane wejściowe:



Przesłany tekst jest zakodowany w UTF-8. Ponieważ funkcje skrótu działają na danych binarnych, wynik będzie inny niż w przypadku tekstu w innym kodowaniu. Jeśli chcesz obliczyć skrót tekstu w określonym kodowaniu, powinieneś przesłać plik.



O algorytmie skrótu CRC-32B

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 swoisty, unikalny odcisk palca wiadomości.
    • To jest suma kontrolna CRC-32.

Wersja przedstawiona na stronie to wariant CRC-32B, który jest głównie dziwactwem PHP, które zmienia kolejność bitów (little-endian vs big-endian). Prawdopodobnie powinieneś używać tej wersji tylko wtedy, gdy konkretnie potrzebujesz zgodności z inną aplikacją PHP, która jej używa.

Posiadam również kalkulatory dla innych wariantów:


Udostępnij na BlueskyUdostępnij na FacebookuUdostępnij na LinkedInUdostępnij na TumblrUdostępnij na XUdostępnij na LinkedInPrzypnij na Pintereście

Mikkel Bang Christensen

O autorze

Mikkel Bang Christensen
Mikkel jest twórcą i właścicielem miklix.com. Ma ponad 20-letnie doświadczenie jako profesjonalny programista komputerowy / programista oprogramowania i jest obecnie zatrudniony na pełny etat w dużej europejskiej korporacji IT. Kiedy nie bloguje, poświęca swój wolny czas na szeroki wachlarz zainteresowań, hobby i aktywności, co może w pewnym stopniu znaleźć odzwierciedlenie w różnorodności tematów poruszanych na tej stronie.