Miklix

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.

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 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.


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 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:


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

Mikkel Bang Christensen

Om forfatteren

Mikkel Bang 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.