CRC-32B Hash-kodeberegner
Udgivet: 17. februar 2025 kl. 18.23.39 UTC
Hash-kodeberegner, der bruger CRC-32B (Cyclic Redundancy Check 32 bit, B variant) hash-funktion til at beregne en hash-kode baseret på tekstinput eller filupload.CRC-32B Hash Code Calculator
Cyclic Redundancy Check (CRC) er en fejldetekterende kode, der almindeligvis bruges til at detektere utilsigtede ændringer af rådata. Selvom det ikke teknisk set er en kryptografisk hash-funktion, omtales CRC-32 ofte som en hash på grund af dens evne til at producere et output med fast størrelse (32 bit) fra input med variabel længde. Den version, der præsenteres på denne side, er CRC-32B-varianten, som i virkeligheden bare er en særhed i PHP-sproget, der vender lidt rundt (little-endian vs big-endian i den originale CRC-32).
Fuld åbenhed: Jeg har ikke skrevet den specifikke implementering af den hash-funktion, der bruges på denne side. Det er en standardfunktion, der følger med programmeringssproget PHP. Jeg har kun lavet webgrænsefladen for at gøre den offentligt tilgængelig her for nemheds skyld.
Om CRC-32B Hash-algoritmen
Jeg er ikke matematiker, men jeg vil prøve at forklare denne hash-funktion med en simpel analogi. I modsætning til mange af de kryptografiske hash-funktioner er det ikke en særlig kompliceret algoritme, så det skal nok være okay ;-)
Forestil dig, at du sender et brev med posten, men du er bange for, at det kan blive beskadiget, før det når frem til modtageren. Ud fra indholdet af brevet beregner du en CRC-32 kontrolsum og skriver det på kuverten. Når modtageren modtager brevet, kan han eller hun så også regne kontrolsummen ud og se, om det stemmer overens med det, du har skrevet. Hvis det gør, blev brevet ikke beskadiget eller ændret undervejs.
Måden CRC-32 gør dette på er en fire-trins proces:
Trin 1: Tilføj noget ekstra plads (polstring)
- CRC tilføjer lidt ekstra plads i slutningen af beskeden (som at pakke jordnødder i en kasse).
- Dette hjælper det lettere at opdage fejl.
Trin 2: Den magiske hersker (polynomiet)
- CRC-32 bruger en speciel "magisk lineal" til at måle dataene.
- Tænk på denne lineal som et mønster af bump og riller (dette er polynomiet, men du skal ikke bekymre dig om det ord).
- Den mest almindelige "lineal" for CRC-32 er et fast mønster.
Trin 3: Forskydning af linealen (delingsproces)
- Nu glider CRC linealen hen over beskeden.
- På hvert sted tjekker den, om bump og riller er på linje.
- Hvis de ikke stemmer overens, laver CRC en note (dette gøres ved hjælp af simpel XOR, som f.eks. at slå kontakter til eller fra).
- Den bliver ved med at glide og dreje på kontakterne, indtil den når enden.
Trin 4: Det endelige resultat (kontrolsummen)
- Når du har ført linealen hen over hele beskeden, står du tilbage med et lille tal (32 bit langt), der repræsenterer de originale data.
- Dette nummer er som et unikt fingeraftryk for beskeden.
- Dette er CRC-32 kontrolsummen.
Den version, der præsenteres på siden, er CRC-32B-varianten, som for det meste er en PHP-quirk, der skifter bitrækkefølgen rundt (little-endian vs big-endian). Du bør sandsynligvis kun bruge denne version, hvis du specifikt har brug for kompatibilitet med et andet PHP-program, der bruger det.
Jeg har også lommeregnere til de andre varianter: