Fowler-Noll-Vo FNV1a-32 Hashcodecalculator
Gepubliceerd: 18 februari 2025 om 00:09:19 UTC
Laatst bijgewerkt: 12 januari 2026 om 13:28:23 UTC
Fowler-Noll-Vo FNV1a-32 Hash Code Calculator
De FNV-1a 32-bits hashfunctie behoort tot de Fowler-Noll-Vo (FNV)-familie van hashfuncties, ontworpen voor snel hashen met behoud van een goede verdeling van hashwaarden. Deze functie wordt veel gebruikt in toepassingen zoals hashtabellen, checksums en data-opzoekingen. De functie produceert een 32-bits (4 bytes) hashcode, die vaak wordt weergegeven als een hexadecimaal getal van 8 cijfers.
De FNV-1a-variant is een verbeterde versie van de originele FNV-1 met betere beveiliging.
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 Fowler-Noll-Vo FNV-1a 32-bits hash-algoritme
Ik ben geen wiskundige, maar ik zal proberen deze hashfunctie uit te leggen met een analogie die mijn niet-wiskundige medemensen kunnen begrijpen. Als je liever een wetenschappelijk correcte, ingewikkelde wiskundige uitleg wilt, kun je die vast wel ergens anders vinden ;-)
Laten we het FNV-1-algoritme allereerst vergelijken met een recept voor een speciale smoothie. Elk ingrediënt dat je toevoegt (zoals fruit, melk of honing) staat voor een stukje data – zoals letters, cijfers of zelfs een heel bestand.
Het doel is nu om deze ingrediënten op een zeer specifieke manier te mengen, zodat zelfs de kleinste verandering in het recept (zoals het toevoegen van een extra bosbes) de smoothie een compleet andere smaak geeft. Zo werken hashfuncties: ze creëren een unieke "smaak" (of hashwaarde) voor elke unieke set ingrediënten (of invoergegevens).
Het FNV-1-algoritme doet dit via een proces in meerdere stappen:
Stap 1: Begin met een basis (offsetbasis)
Zie het als het gieten van een speciale smoothiebasis in je blender. Deze basis is altijd hetzelfde, ongeacht welke ingrediënten je toevoegt. In FNV-1 wordt dit de "offsetbasis" genoemd - gewoon een chique startwaarde.
Stap 2: Ingrediënten één voor één toevoegen (gegevens verwerken)
Nu begin je de ingrediënten één voor één toe te voegen - laten we zeggen een aardbei, dan een banaan, dan wat honing. Elk van deze ingrediënten vertegenwoordigt een byte aan data.
Stap 3: Mixen met een geheime vermenigvuldiger (de FNV Prime)
Nadat je elk ingrediënt hebt toegevoegd, druk je op de mixknop. Maar hier komt de truc: de blender vermenigvuldigt alles met een geheim "magisch getal" genaamd de FNV-priem. Dit zorgt ervoor dat alles perfect gemengd wordt.
Stap 4: Voeg een vleugje magie toe (XOR-bewerking)
Voordat je het volgende ingrediënt toevoegt, strooi je er een beetje magisch poeder overheen (dit is de XOR-bewerking). Het is alsof je de smaak op onverwachte manieren omdraait, waardoor zelfs kleine veranderingen een groot verschil maken.
Stap 5: Herhaal tot het klaar is.
Je blijft mixen en na elk nieuw ingrediënt een beetje magie toevoegen totdat je alles hebt verwerkt.
Stap 6: Eindsmoothie (hashwaarde)
Als je klaar bent, giet je de smoothie in een glas. De uiteindelijke smaak (de hashwaarde) is uniek voor die specifieke combinatie van ingrediënten. Als je er zelfs maar één extra bosbes aan had toegevoegd, zou de smaak compleet anders zijn.
De versie die hier wordt getoond, is de verbeterde 32-bits versie van de FNV-1a. Als je de originele versie nodig hebt, heb ik daar ook een rekenmachine voor: Link.
Verder lezen
Als je dit bericht leuk vond, vind je deze suggesties misschien ook interessant:
