Miklix

CRC-32C Hash-kodekalkulator

Publisert: 17. februar 2025 kl. 18:44:59 UTC
Sist oppdatert: 13. september 2025 kl. 22:52:55 UTC

Hash-kodekalkulator som bruker hash-funksjonen CRC-32C (Cyclic Redundancy Check 32 bit, C variant) til å beregne en hash-kode basert på tekstinndata eller filopplasting.

Denne siden er maskinoversatt fra engelsk for å gjøre den tilgjengelig for så mange som mulig. Dessverre er maskinoversettelse ennå ikke en fullkommen teknologi, så det kan forekomme feil. Hvis du foretrekker det, kan du se den engelske originalversjonen her:

CRC-32C Hash Code Calculator

Syklisk redundanssjekk (CRC) er en feiloppdagende kode som vanligvis brukes til å oppdage utilsiktede endringer i rådata. Selv om det teknisk sett ikke er en kryptografisk hash-funksjon, blir CRC-32 ofte referert til som en hash på grunn av dens evne til å produsere en utgang med fast størrelse (32 biter) fra input med variabel lengde. Versjonen som presenteres på denne siden er CRC-32C-varianten, som er en nyere, "smartere" (bedre feildeteksjon) versjon som ofte er maskinvareakselerert på moderne CPUer (via SSE 4.2).

Full åpenhet: Jeg har ikke skrevet den spesifikke implementasjonen av hash-funksjonen som brukes på denne siden. Det er en standardfunksjon som følger med programmeringsspråket PHP. Jeg har bare laget webgrensesnittet for å gjøre den offentlig tilgjengelig her for enkelhets skyld.


Beregn ny hash-kode

Data som sendes inn eller filer som lastes opp via dette skjemaet, vil bare bli lagret på serveren så lenge det tar å generere den forespurte hash-koden. De slettes umiddelbart før resultatet returneres til nettleseren din.

Inndata:



Innsendt tekst er UTF-8-kodet. Siden hashfunksjoner opererer på binære data, vil resultatet bli annerledes enn om teksten hadde vært i en annen koding. Hvis du trenger å beregne en hash av en tekst i en bestemt koding, bør du laste opp en fil i stedet.



Om CRC-32C hash-algoritmen

Jeg er ingen matematiker, men jeg skal prøve å forklare denne hash-funksjonen med en enkel analogi. I motsetning til mange av de kryptografiske hash-funksjonene, er det ikke en spesielt komplisert algoritme, så det vil sannsynligvis være greit ;-)

Tenk deg at du sender et brev i posten, men du er bekymret for at det kan bli skadet før det kommer til mottakeren. Basert på innholdet i brevet beregner du en CRC-32-kontrollsum og skriver den på konvolutten. Når mottakeren mottar brevet, kan han eller hun også beregne kontrollsummen og se om den stemmer overens med det du skrev. Hvis det gjør det, ble ikke brevet skadet eller endret underveis.

Måten CRC-32 gjør dette på er en firetrinns prosess:

Trinn 1: Legg til litt ekstra plass (polstring)

  • CRC legger til litt ekstra plass på slutten av meldingen (som å pakke peanøtter i en boks).
  • Dette hjelper den med å oppdage feil lettere.

Trinn 2: Den magiske herskeren (polynomet)

  • CRC-32 bruker en spesiell "magisk linjal" for å måle dataene.
    • Tenk på denne linjalen som et mønster av ujevnheter og riller (dette er polynomet, men ikke bekymre deg for det ordet).
    • Den vanligste "linjalen" for CRC-32 er et fast mønster.

Trinn 3: Skyv linjalen (delingsprosess)

  • Nå skyver CRC linjalen over meldingen.
    • På hvert sted sjekker den om ujevnheter og riller stemmer overens.
    • Hvis de ikke stemmer overens, lager CRC et notat (dette gjøres ved hjelp av enkel XOR, som å slå brytere på eller av).
    • Den fortsetter å skyve og snu brytere til den når slutten.

Trinn 4: Det endelige resultatet (sjekksummen)

  • Når du har skjøvet linjalen over hele meldingen, sitter du igjen med et lite tall (32 biter langt) som representerer de opprinnelige dataene.
    • Dette nummeret er som et unikt fingeravtrykk for meldingen.
    • Dette er CRC-32-kontrollsummen.

Versjonen som presenteres på siden er CRC-32C-varianten, som bør være den foretrukne varianten, spesielt hvis du bruker en CPU som har den maskinvareakselerert (SSE 4.2 og nyere) og du ikke trenger kompatibilitet med andre varianter.

Jeg har kalkulatorer for de andre variantene også:

Videre lesing

Hvis du likte dette innlegget, kan du også like disse forslagene:


Del på BlueskyDel på FacebookDel på LinkedInDel på TumblrDel på XDel på LinkedInFest på Pinterest

Mikkel Christensen

Om forfatteren

Mikkel Christensen
Mikkel er skaperen og eieren av miklix.com. Han har over 20 års erfaring som profesjonell dataprogrammerer/programvareutvikler og er for tiden ansatt på fulltid i et stort europeisk IT-selskap. Når han ikke blogger, bruker han fritiden sin på en lang rekke interesser, hobbyer og aktiviteter, noe som til en viss grad kan gjenspeiles i de mange ulike temaene som dekkes på dette nettstedet.