CRC-32 Hash-codecalculator
Gepubliceerd: 17 februari 2025 om 18:12:04 UTC
Hashcodecalculator die de CRC-32 (Cyclic Redundancy Check 32 bit) hashfunctie gebruikt om een hashcode te berekenen op basis van tekstinvoer of geüpload bestand.CRC-32 Hash Code Calculator
Cyclic Redundancy Check (CRC) is een foutdetectiecode die vaak wordt gebruikt om onbedoelde wijzigingen in ruwe data te detecteren. Hoewel het technisch gezien geen cryptografische hashfunctie is, wordt CRC-32 vaak een hash genoemd vanwege het vermogen om een output van vaste grootte (32 bits) te produceren van input van variabele lengte.
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-32-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 het geen bijzonder ingewikkeld algoritme, dus het zal waarschijnlijk wel goed komen ;-)
Stel je voor dat je een brief per post verstuurt, maar je bent bang dat deze beschadigd raakt voordat deze bij de ontvanger aankomt. Op basis van de inhoud van de brief bereken je een CRC-32-checksum en schrijf je die op de envelop. Wanneer de ontvanger de brief ontvangt, kan hij of zij ook de checksum berekenen en zien of deze overeenkomt met wat je hebt geschreven. Als dat zo is, is de brief niet beschadigd of veranderd tijdens het transport.
CRC-32 doet dit via een proces in vier stappen:
Stap 1: Voeg wat extra ruimte toe (opvulling)
- CRC voegt wat extra ruimte toe aan het einde van het bericht (alsof je pinda's in een doos verpakt).
- Hierdoor kunnen fouten gemakkelijker worden opgemerkt.
Stap 2: De magische liniaal (de polynoom)
- CRC-32 gebruikt een speciale "magische liniaal" om de gegevens te meten.
- Beschouw deze liniaal als een patroon van bulten en groeven (dit is de polynoom, maar maak je geen zorgen over dat woord).
- De meest voorkomende "liniaal" voor CRC-32 is een vast patroon.
Stap 3: De liniaal verschuiven (delingsproces)
- Nu schuift CRC de liniaal over het bericht.
- Op elke plek wordt gecontroleerd of de bulten en groeven op één lijn liggen.
- Als ze niet op één lijn liggen, maakt CRC daar een aantekening van (dit gebeurt met behulp van eenvoudige XOR, zoals het aan- of uitzetten van schakelaars).
- Hij blijft schuiven en schakelaars omzetten tot hij het einde bereikt.
Stap 4: Het uiteindelijke resultaat (de controlesom)
- Nadat u de liniaal over het hele bericht hebt geschoven, blijft er een klein getal over (32 bits lang) dat de oorspronkelijke gegevens vertegenwoordigt.
- Dit nummer is als het ware een unieke vingerafdruk voor het bericht.
- Dit is de CRC-32-controlesom.
De versie die op de pagina wordt gepresenteerd, is de originele CRC-32-functie. Deze dient u te gebruiken voor de beste compatibiliteit met andere systemen.
Ik heb ook rekenmachines voor de andere varianten: