Fowler-Noll-Vo FNV1a-32 Hash-kodeberegner
Udgivet: 18. februar 2025 kl. 00.08.50 UTC
Sidst opdateret: 12. januar 2026 kl. 13.28.14 UTC
Fowler-Noll-Vo FNV1a-32 Hash Code Calculator
FNV-1a 32-bit hashfunktionen er en del af Fowler-Noll-Vo (FNV)-familien af hashfunktioner, der er designet til hurtig hashing, samtidig med at en god fordeling af hashværdier opretholdes. Den bruges almindeligvis i applikationer som hashtabeller, checksummer og dataopslag. Den producerer en 32-bit (4 byte) hashkode, ofte repræsenteret som et 8-cifret hexadecimalt tal.
FNV-1a-varianten er en forbedret version i forhold til den originale FNV-1-funktion med bedre sikkerhed.
Fuld åbenhed: Jeg har ikke skrevet den specifikke implementering af den hash-funktion, der bruges på denne side. Det er en standardfunktion, der følger med programmeringssproget PHP. Jeg har kun lavet webgrænsefladen for at gøre den offentligt tilgængelig her for nemheds skyld.
Om Fowler-Noll-Vo FNV-1a 32-bit hash-algoritmen
Jeg er ikke matematiker, men jeg vil forsøge at forklare denne hashfunktion ved hjælp af en analogi, som mine ikke-matematikerkolleger kan forstå. Hvis du foretrækker en videnskabeligt korrekt, skræmmende matematikforklaring, er jeg sikker på, at du kan finde den et andet sted ;-)
Lad os først tænke på FNV-1-algoritmen som en opskrift på en særlig smoothie. Hver ingrediens du tilføjer (som frugt, mælk eller honning) repræsenterer et stykke data - som bogstaver, tal eller endda en hel fil.
Målet er nu at blande disse ingredienser på en meget specifik måde, så selv den mindste ændring i opskriften (som at tilføje et ekstra blåbær) får smoothien til at smage helt anderledes. Sådan fungerer hash-funktioner - de skaber en unik "smag" (eller hash-værdi) for hvert unikke sæt af ingredienser (eller inputdata).
Måden FNV-1-algoritmen gør dette på er en proces i flere trin:
Trin 1: Start med en base (offsetbasis)
Tænk på det som at hælde en speciel smoothie-base i din blender. Denne base er altid den samme, uanset hvilke ingredienser du tilsætter. I FNV-1 kaldes dette "offset basis" - bare et smart starttal.
Trin 2: Tilsæt ingredienser én efter én (behandling af data)
Nu begynder du at tilføje dine ingredienser, én ad gangen - lad os sige et jordbær, så en banan og så lidt honning. Hver af disse repræsenterer en byte data.
Trin 3: Bland med en hemmelig multiplikator (FNV Prime)
Efter at have tilsat hver ingrediens, trykker du på blendknappen, men her er twistet: blenderen ganger alt med et hemmeligt "magisk tal" kaldet FNV-primtallet. Dette hjælper med at blende tingene rigtig godt.
Trin 4: Tilføj et strejf af magi (XOR-operation)
Før du tilsætter den næste ingrediens, drysser du lidt magisk støv i (dette er XOR-operationen). Det er som at vende smagen på uventede måder, hvilket sikrer, at selv små ændringer gør en stor forskel.
Trin 5: Gentag indtil færdig
Du bliver ved med at blende og drysse magi efter hver ny ingrediens, indtil du har forarbejdet alt.
Trin 6: Endelig smoothie (hashværdi)
Når du er færdig, hælder du smoothien ud. Den endelige smag (hashværdien) er unik for netop den kombination af ingredienser. Hvis du havde tilføjet bare ét ekstra blåbær, ville det smage helt anderledes.
Versionen, der præsenteres her, er den forbedrede FNV-1a 32-bit version. Hvis du har brug for den originale version, har jeg også en lommeregner til det: Link
Yderligere læsning
Hvis du kunne lide dette indlæg, kan du måske også lide disse forslag:
