CRC-32C Hashcodecalculator
Gepubliceerd: 17 februari 2025 om 18:45:06 UTC
Laatst bijgewerkt: 12 januari 2026 om 11:37:27 UTC
CRC-32C Hash Code Calculator
Cyclic Redundancy Check (CRC) is een foutdetectiecode die vaak wordt gebruikt om onbedoelde wijzigingen in ruwe data te detecteren. Hoewel CRC-32 technisch gezien geen cryptografische hashfunctie is, wordt het vaak wel een hash genoemd vanwege de mogelijkheid om een uitvoer van vaste grootte (32 bits) te produceren uit een invoer van variabele lengte. De versie die op deze pagina wordt gepresenteerd, is de CRC-32C-variant, een nieuwere, "slimmere" (betere foutdetectie) versie die vaak hardwarematig wordt versneld op moderne CPU's (via SSE 4.2).
Full disclosure: Ik heb de specifieke implementatie van de hashfunctie die op deze pagina wordt gebruikt niet geschreven. Het is een standaardfunctie die wordt meegeleverd met de programmeertaal PHP. Ik heb alleen de webinterface gemaakt om hem hier voor het gemak publiekelijk beschikbaar te maken.
Over het CRC-32C-hashalgoritme
Ik ben geen wiskundige, maar ik zal proberen deze hashfunctie uit te leggen met een simpele analogie. In tegenstelling tot veel cryptografische hashfuncties is dit geen bijzonder ingewikkeld algoritme, dus het zal vast wel lukken ;-)
Stel je voor dat je een brief verstuurt, maar je bent bang dat hij beschadigd raakt voordat hij bij de ontvanger aankomt. Op basis van de inhoud van de brief bereken je een CRC-32-controlecijfer en schrijf je dat op de envelop. Wanneer de ontvanger de brief ontvangt, kan hij of zij ook het controlecijfer berekenen en controleren of het overeenkomt met wat jij hebt geschreven. Als dat zo is, is de brief niet beschadigd of gewijzigd tijdens de verzending.
De manier waarop CRC-32 dit doet, is een proces in vier stappen:
Stap 1: Voeg wat extra ruimte toe (opvulling)
- CRC voegt een beetje extra ruimte toe aan het einde van het bericht (net zoals je piepschuimkorrels in een doos stopt).
- Hierdoor worden fouten gemakkelijker opgespoord.
Stap 2: De magische liniaal (het polynoom)
- CRC-32 gebruikt een speciale "magische liniaal" om de gegevens te meten. Zie deze liniaal als een patroon van bulten en groeven (dit is het polynoom, maar maak je geen zorgen over dat woord). De meest voorkomende "liniaal" voor CRC-32 is een vast patroon.
Stap 3: Het verschuiven van de liniaal (deelproces)
- Nu schuift CRC de liniaal over het bericht. Op elke plek controleert het of de bultjes en groeven op één lijn liggen. Als ze niet op één lijn liggen, maakt CRC een aantekening (dit gebeurt met een eenvoudige XOR-bewerking, zoals het aan- of uitzetten van schakelaars). Het blijft schuiven en schakelaars omzetten totdat het einde is bereikt.
Stap 4: Het eindresultaat (de controlesom)
- Nadat je de liniaal over het hele bericht hebt bewogen, blijft er een klein getal over (32 bits lang) dat de oorspronkelijke gegevens vertegenwoordigt. Dit getal is als een unieke vingerafdruk voor het bericht. Dit is de CRC-32-checksum.
De versie die op de pagina wordt getoond, is de CRC-32C-variant. Dit is de aanbevolen variant, vooral als u een CPU gebruikt die hardwarematige versnelling ondersteunt (SSE 4.2 en later) en u geen compatibiliteit met andere varianten nodig hebt.
Ik heb ook rekenmachines voor de andere varianten:
- Link
- Link
Verder lezen
Als je dit bericht leuk vond, vind je deze suggesties misschien ook interessant:
