Fowler-Noll-Vo FNV1a-32 Hash-kodekalkulator
Publisert: 18. februar 2025 kl. 00:09:16 UTC
Sist oppdatert: 13. september 2025 kl. 22:52:55 UTC
Fowler-Noll-Vo FNV1a-32 Hash Code Calculator
FNV-1a 32-bits hash-funksjonen er en del av Fowler-Noll-Vo (FNV)-familien av hash-funksjoner, designet for rask hashing samtidig som den opprettholder en god fordeling av hash-verdier. Det brukes ofte i applikasjoner som hash-tabeller, kontrollsummer og dataoppslag. Den produserer en 32-biters (4 byte) hash-kode, ofte representert som et 8-sifret heksadesimalt tall.
FNV-1a-varianten er en forbedret versjon i forhold til den originale FNV-1-funksjonen med bedre sikkerhet.
Full åpenhet: Jeg har ikke skrevet den spesifikke implementasjonen av hash-funksjonen som brukes på denne siden. Det er en standardfunksjon som følger med programmeringsspråket PHP. Jeg har bare laget webgrensesnittet for å gjøre den offentlig tilgjengelig her for enkelhets skyld.
Om Fowler-Noll-Vo FNV-1a 32-biters hash-algoritme
Jeg er ikke matematiker, men jeg skal prøve å forklare denne hash-funksjonen ved hjelp av en analogi som mine med-ikke-matematikere kan forstå. Hvis du foretrekker en vitenskapelig korrekt, skummel matematisk forklaring, er jeg sikker på at du kan finne det andre steder ;-)
La oss først tenke på FNV-1-algoritmen som en oppskrift for å lage en spesiell smoothie. Hver ingrediens du legger til (som frukt, melk eller honning) representerer et stykke data - som bokstaver, tall eller til og med en hel fil.
Nå er målet å blande disse ingrediensene på en veldig spesifikk måte, slik at selv den minste endringen i oppskriften (som å legge til ett ekstra blåbær) får smoothien til å smake helt annerledes. Det er slik hash-funksjoner fungerer - de skaper en unik "smak" (eller hash-verdi) for hvert unike sett med ingredienser (eller inndata).
Måten FNV-1-algoritmen gjør dette på er en flertrinnsprosess:
Trinn 1: Start med en base (offset basis)
Tenk på dette som å helle en spesiell smoothiebase i blenderen. Denne basen er alltid den samme, uansett hvilke ingredienser du tilsetter. I FNV-1 kalles dette "offset basis" - bare et fancy startnummer.
Trinn 2: Tilsett ingredienser én etter én (behandler data)
Nå begynner du å tilsette ingrediensene dine, en om gangen - la oss si et jordbær, så en banan, deretter litt honning. Hver av disse representerer en byte med data.
Trinn 3: Bland med en hemmelig multiplikator (FNV Prime)
Etter å ha tilsatt hver ingrediens, trykker du på blandingsknappen, men her er vrien: blenderen multipliserer alt med et hemmelig "magisk tall" kalt FNV prime. Dette hjelper til med å blande ting veldig bra.
Trinn 4: Legg til en dæsj magi (XOR-operasjon)
Før du tilsetter neste ingrediens, drysser du i litt magisk støv (dette er XOR-operasjonen). Det er som å snu smaken på uventede måter, og sikre at selv små endringer utgjør en stor forskjell.
Trinn 5: Gjenta til du er ferdig
Du fortsetter å blande og drysse magi etter hver nye ingrediens til du har bearbeidet alt.
Trinn 6: Endelig smoothie (hashverdi)
Når du er ferdig, heller du ut smoothien. Den endelige smaken (hashverdien) er unik for den eksakte kombinasjonen av ingredienser. Hvis du hadde lagt til enda ett ekstra blåbær, ville det smake helt annerledes.
Versjonen som presenteres her er den forbedrede FNV-1a 32-biters versjonen. Hvis du trenger originalversjonen, har jeg også en kalkulator for det: Fowler-Noll-Vo FNV1-32 Hash-kodekalkulator
Videre lesing
Hvis du likte dette innlegget, kan du også like disse forslagene: