CRC-32B Hash-kodekalkulator
Publisert: 17. februar 2025 kl. 18:26:31 UTC
Sist oppdatert: 13. september 2025 kl. 22:52:55 UTC
CRC-32B 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-32B-varianten, som egentlig bare er en særegenhet 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.
Om CRC-32B 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-32B-varianten, som for det meste er en PHP-særegenhet 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 kalkulatorer for de andre variantene også:
Videre lesing
Hvis du likte dette innlegget, kan du også like disse forslagene:
- MurmurHash3C Hashkodekalkulator
- Fowler-Noll-Vo FNV1a-32 Hash-kodekalkulator
- XXH-128 Hash-kodekalkulator