Miklix

CRC-32B Hash-kodekalkulator

Publisert: 17. februar 2025 kl. 18:26:31 UTC

Hash-kodekalkulator som bruker hash-funksjonen CRC-32B (Cyclic Redundancy Check 32 bit, B variant) for å beregne en hashkode basert på tekstinntasting 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-32B Hash Code Calculator

Cyclic Redundancy Check (CRC) er en feiloppdagende kode som vanligvis brukes for å oppdage utilsiktede endringer i rådata. Selv om det ikke teknisk sett er en kryptografisk hash-funksjon, blir CRC-32 ofte referert til som en hash på grunn av dens evne til å produsere en utdata med fast størrelse (32 biter) fra inngang med variabel lengde. Versjonen som presenteres på denne siden er CRC-32B-varianten, som egentlig bare er en finurlighet i PHP-språket som snur bitene rundt (little-endian vs big-endian i den originale CRC-32).

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-32B Hash Algorithm

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 går nok 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 sjekksum og skriver det på konvolutten. Når mottakeren mottar brevet, kan han eller hun da også beregne sjekksummen og se om den stemmer med det du skrev. Hvis den gjør det, ble ikke brevet skadet eller endret underveis.

Måten CRC-32 gjør dette på er en fire-trinns 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 det å oppdage feil lettere.

Trinn 2: Den magiske linjalen (polynomet)

  • CRC-32 bruker en spesiell "magisk linjal" for å måle dataene.
    • Tenk på denne linjalen som et mønster av støt 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 (divisjonsprosess)

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

Trinn 4: Det endelige resultatet (sjekksummen)

  • Etter å ha ført linjalen over hele meldingen, sitter du igjen med et lite tall (32 bits langt) som representerer de originale dataene.
    • Dette nummeret er som et unikt fingeravtrykk for meldingen.
    • Dette er CRC-32-sjekksummen.

Versjonen som presenteres på siden er CRC-32B-varianten, som for det meste er et PHP-innfall som bytter bitrekkefølgen rundt (little-endian vs big-endian). Du bør sannsynligvis bare bruke denne versjonen hvis du spesifikt trenger kompatibilitet med en annen PHP-applikasjon som bruker den.

Jeg har også kalkulatorer for de andre variantene:


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

Mikkel Bang Christensen

Om forfatteren

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