Miklix

CRC-32B Hash-kodeberegner

Udgivet: 17. februar 2025 kl. 18.23.39 UTC
Sidst opdateret: 12. januar 2026 kl. 09.15.40 UTC

Hashkodeberegner, der bruger CRC-32B (Cyclic Redundancy Check 32 bit, B-variant) hashfunktionen til at beregne en hashkode baseret på tekstinput eller filupload.

Denne side er blevet maskinoversat fra engelsk for at gøre den tilgængelig for så mange mennesker som muligt. Desværre er maskinoversættelse endnu ikke en perfekt teknologi, så der kan forekomme fejl. Hvis du foretrækker det, kan du se den originale engelske version her:

CRC-32B Hash Code Calculator

Cyclic Redundancy Check (CRC) er en fejlfindingskode, der almindeligvis bruges til at detektere utilsigtede ændringer i rådata. Selvom det teknisk set ikke er en kryptografisk hashfunktion, omtales CRC-32 ofte som en hash på grund af dens evne til at producere et output i fast størrelse (32 bit) fra input med variabel længde. Versionen, der præsenteres på denne side, er CRC-32B-varianten, som egentlig bare er en særhed i PHP-sproget, der vender bitsene om (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.


Beregn ny hash-kode

Data, der indsendes, eller filer, der uploades via denne formular, opbevares kun på serveren, så længe det tager at generere den ønskede hashkode. De slettes umiddelbart før resultatet returneres til din browser.

Input-data:



Den indsendte tekst er UTF-8-kodet. Da hashfunktioner opererer med binære data, vil resultatet være anderledes, end hvis teksten var i en anden kodning. Hvis du har brug for at beregne et hash af en tekst i en bestemt kodning, skal du uploade en fil i stedet.



Om CRC-32B hash-algoritmen

Jeg er ikke matematiker, men jeg vil forsøge at forklare denne hashfunktion med en simpel analogi. I modsætning til mange af de kryptografiske hashfunktioner er det ikke en særlig kompliceret algoritme, så det skal nok gå ;-)

Forestil dig, at du sender et brev med posten, men du er bekymret for, at det kan blive beskadiget, før det ankommer til modtageren. Baseret på brevets indhold beregner du en CRC-32-kontrolsum og skriver den på kuverten. Når modtageren modtager brevet, kan han eller hun også beregne kontrolsummen og se, om den stemmer overens med det, du skrev. Hvis den gør, er brevet ikke blevet beskadiget eller ændret undervejs.

Måden CRC-32 gør dette på er en proces med fire trin:

Trin 1: Tilføj ekstra plads (polstring)

  • CRC tilføjer lidt ekstra plads i slutningen af beskeden (ligesom at pakke jordnødder i en æske).
  • Dette hjælper den med lettere at opdage fejl.

Trin 2: Den magiske lineal (polynomiet)

  • CRC-32 bruger en speciel "magisk lineal" til at måle dataene. Tænk på denne lineal som et mønster af buler og riller (dette er polynomiet, men bare rolig med det ord). Den mest almindelige "lineal" for CRC-32 er et fast mønster.

Trin 3: Glidning af linealen (divisionsproces)

  • Nu glider CRC linealen hen over beskeden. På hvert sted kontrollerer den, om ujævnheder og riller flugter. Hvis de ikke flugter, laver CRC en note (dette gøres ved hjælp af simpel XOR, ligesom at tænde eller slukke for kontakter). Den bliver ved med at skubbe og vippe kontakter, indtil den når slutningen.

Trin 4: Det endelige resultat (kontrolsummen)

  • Når du har skubbet linealen hen over hele beskeden, står du tilbage med et lille tal (32 bit langt), der repræsenterer de originale data. Dette tal er som et unikt fingeraftryk for beskeden. Dette er CRC-32-kontrolsummen.

Versionen, der præsenteres på siden, er CRC-32B-varianten, som primært er en PHP-særhed, der ændrer bitrækkefølgen (little-endian vs. big-endian). Du bør nok kun bruge denne version, hvis du specifikt har brug for kompatibilitet med et andet PHP-program, der bruger den.

Jeg har også lommeregnere til de andre varianter:

  • Forbindelse
  • Forbindelse

Yderligere læsning

Hvis du kunne lide dette indlæg, kan du måske også lide disse forslag:


Del på BlueskyDel på FacebookDel på LinkedInDel på TumblrDel på XDel på LinkedInFastgør på Pinterest

Mikkel Christensen

Om forfatteren

Mikkel Christensen
Mikkel er skaberen og ejeren af miklix.com. Han har over 20 års erfaring som professionel computerprogrammør/softwareudvikler og er i øjeblikket fuldtidsansat i en stor europæisk IT-virksomhed. Når han ikke blogger, bruger han sin fritid på en lang række interesser, hobbyer og aktiviteter, som i et vist omfang afspejles i de mange forskellige emner, der dækkes på dette websted.