CRC-32C Hashkodräknare
Publicerad: 17 februari 2025 kl. 18:45:19 UTC
Senast uppdaterad: 12 januari 2026 kl. 11:37:30 UTC
CRC-32C Hash Code Calculator
Cyklisk redundanskontroll (CRC) är en feldetekteringskod som vanligtvis används för att upptäcka oavsiktliga ändringar i rådata. Även om det tekniskt sett inte är en kryptografisk hashfunktion, kallas CRC-32 ofta för en hash på grund av dess förmåga att producera en utdata med fast storlek (32 bitar) från indata med variabel längd. Versionen som presenteras på denna sida är CRC-32C-varianten, som är en nyare, "smartare" (bättre feldetektering) version som ofta är hårdvaruaccelererad på moderna processorer (via SSE 4.2).
Fullständig information: Jag har inte skrivit den specifika implementeringen av hashfunktionen som används på den här sidan. Det är en standardfunktion som ingår i programmeringsspråket PHP. Jag har bara gjort webbgränssnittet för att göra den allmänt tillgänglig här för enkelhetens skull.
Om CRC-32C hashalgoritmen
Jag är ingen matematiker, men jag ska försöka förklara den här hashfunktionen med en enkel analogi. Till skillnad från många av de kryptografiska hashfunktionerna är det inte en särskilt komplicerad algoritm, så det kommer nog att gå bra ;-)
Tänk dig att du skickar ett brev med posten, men du är orolig att det kan skadas innan det anländer till mottagaren. Baserat på brevets innehåll beräknar du en CRC-32-kontrollsumma och skriver den på kuvertet. När mottagaren får brevet kan han eller hon också beräkna kontrollsumman och se om den matchar det du skrev. Om den gör det har brevet inte skadats eller ändrats under resans gång.
CRC-32 gör detta i fyra steg:
Steg 1: Lägg till lite extra utrymme (utfyllnad)
- CRC lägger till lite extra utrymme i slutet av meddelandet (som att packa jordnötter i en låda).
- Detta hjälper den att lättare upptäcka fel.
Steg 2: Den magiska linjalen (polynomet)
- CRC-32 använder en speciell "magisk linjal" för att mäta data. Tänk på denna linjal som ett mönster av gupp och spår (detta är polynomet, men oroa dig inte för det ordet). Den vanligaste "linjalen" för CRC-32 är ett fast mönster.
Steg 3: Föra linjalen (divisionsprocessen)
- Nu skjuter CRC linjalen över meddelandet. Vid varje punkt kontrollerar den om ojämnheter och spår är i linje. Om de inte är i linje gör CRC en anteckning (detta görs med enkel XOR, som att slå på eller av brytare). Den fortsätter att skjuta och växla brytare tills den når slutet.
Steg 4: Slutresultatet (kontrollsumman)
- Efter att du har dragit linjalen över hela meddelandet har du kvar ett litet tal (32 bitar långt) som representerar originaldata. Detta tal är som ett unikt fingeravtryck för meddelandet. Detta är CRC-32-kontrollsumman.
Versionen som presenteras på sidan är CRC-32C-varianten, vilket bör vara den föredragna varianten, särskilt om du använder en processor som har hårdvaruaccelererad version (SSE 4.2 och senare) och du inte behöver kompatibilitet med andra varianter.
Jag har även miniräknare för de andra varianterna:
- Länk
- Länk
Vidare läsning
Om du gillade det här inlägget kanske du också gillar dessa förslag:
