Miklix

CRC-32B Hashcodecalculator

Gepubliceerd: 17 februari 2025 om 18:29:33 UTC

Hashcodecalculator die gebruikmaakt van de CRC-32B (Cyclic Redundancy Check 32 bit, B-variant) hashfunctie om een hashcode te berekenen op basis van tekstinvoer of geüpload bestand.

Deze pagina is machinaal uit het Engels vertaald om hem voor zoveel mogelijk mensen toegankelijk te maken. Helaas is machinevertaling nog geen geperfectioneerde technologie, dus er kunnen fouten optreden. Als je dat liever hebt, kun je hier de originele Engelse versie bekijken:

CRC-32B 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. De versie die op deze pagina wordt gepresenteerd, is de CRC-32B-variant, wat eigenlijk gewoon een eigenaardigheid is in de PHP-taal die de bits omdraait (little-endian versus big-endian in de originele CRC-32).

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.


Nieuwe Hashcode berekenen

Gegevens die via dit formulier worden verzonden of bestanden die via dit formulier worden geüpload, worden niet langer op de server bewaard dan nodig is om de gevraagde hashcode te genereren. Ze worden onmiddellijk verwijderd voordat het resultaat naar uw browser wordt teruggestuurd.

Invoergegevens:



De ingediende tekst is UTF-8 gecodeerd. Aangezien hashfuncties werken op binaire gegevens, zal het resultaat anders zijn dan wanneer de tekst in een andere codering zou zijn. Als je een hash moet berekenen van een tekst in een specifieke codering, moet je in plaats daarvan een bestand uploaden.



Over het CRC-32B-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 CRC-32B-variant, die voornamelijk een PHP-eigenaardigheid is die de bitvolgorde omdraait (little-endian versus big-endian). U moet deze versie waarschijnlijk alleen gebruiken als u specifiek compatibiliteit nodig hebt met een andere PHP-applicatie die deze versie gebruikt.

Ik heb ook rekenmachines voor de andere varianten:


Delen op BlueskyDelen op FacebookDelen op LinkedInDelen op TumblrDelen op XDelen op LinkedInPin op Pinterest

Mikkel Bang Christensen

Over de auteur

Mikkel Bang Christensen
Mikkel is de bedenker en eigenaar van miklix.com. Hij heeft meer dan 20 jaar ervaring als professioneel computerprogrammeur/softwareontwikkelaar en werkt momenteel fulltime voor een groot Europees IT-bedrijf. Als hij niet blogt, besteedt hij zijn vrije tijd aan een breed scala aan interesses, hobby's en activiteiten, die tot op zekere hoogte weerspiegeld kunnen worden in de verscheidenheid aan onderwerpen op deze website.