CRC-32C Hash-kodekalkulator
Publisert: 17. februar 2025 kl. 18:44:59 UTC
Hash-kodekalkulator som bruker hashfunksjonen CRC-32C (Cyclic Redundancy Check 32 bit, C variant) for å beregne en hashkode basert på tekstinntasting eller filopplasting.CRC-32C 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-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.
Om CRC-32C 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-32C-varianten, som bør være den foretrukne varianten, spesielt hvis du bruker en CPU som har maskinvareakselerert (SSE 4.2 og nyere) og du ikke trenger kompatibilitet med andre varianter.
Jeg har også kalkulatorer for de andre variantene: