Miklix

Fowler-Noll-Vo FNV1-32 Hash-kodekalkulator

Publisert: 18. februar 2025 kl. 00:15:52 UTC

Hash-kodekalkulator som bruker Fowler-Noll-Vo 1 32-biters (FNV1-32) hashfunksjon for å beregne en hashkode basert på tekstinntasting eller filopplasting.

Denne siden er maskinoversatt fra engelsk for å gjøre den tilgjengelig for så mange som mulig. Dessverre er maskinoversettelse ennå ikke en fullkommen teknologi, så det kan forekomme feil. Hvis du foretrekker det, kan du se den engelske originalversjonen her:

Fowler-Noll-Vo FNV1-32 Hash Code Calculator

FNV-1 32-biters hash-funksjonen er en del av Fowler–Noll–Vo (FNV) familien av hashfunksjoner, designet for rask hash samtidig som den opprettholder en god distribusjon av hashverdier. Det brukes ofte i applikasjoner som hashtabeller, sjekksummer og dataoppslag. Den produserer en 32-biters (4 byte) hash-kode, ofte representert som et 8-sifret heksadesimalt tall.

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.


Beregn ny hash-kode

Data som sendes inn eller filer som lastes opp via dette skjemaet, vil bare bli lagret på serveren så lenge det tar å generere den forespurte hash-koden. De slettes umiddelbart før resultatet returneres til nettleseren din.

Inndata:



Innsendt tekst er UTF-8-kodet. Siden hashfunksjoner opererer på binære data, vil resultatet bli annerledes enn om teksten hadde vært i en annen koding. Hvis du trenger å beregne en hash av en tekst i en bestemt koding, bør du laste opp en fil i stedet.



Om Fowler-Noll-Vo FNV-1 32-biters Hash Algorithm

Jeg er ingen matematiker, men jeg skal prøve å forklare denne hash-funksjonen ved å bruke en analogi som mine andre ikke-matematikere kan forstå. Hvis du foretrekker en vitenskapelig korrekt, skummel-matematisk forklaring, er jeg sikker på at du kan finne den 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) gjør at smoothien smaker helt annerledes. Det er slik hashfunksjoner fungerer – de skaper en unik "smak" (eller hashverdi) 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 smoothiebunn i blenderen din. Denne basen er alltid den samme, uansett hvilke ingredienser du tilsetter. I FNV-1 kalles dette "offset basis" - bare et fancy startnummer.

Trinn 2: Legg til ingredienser én etter én (behandler data)

Nå begynner du å tilsette ingrediensene dine, én om gangen – la oss si et jordbær, så en banan, så 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å blend-knappen, men her er vrien: blenderen multipliserer alt med et hemmelig "magisk tall" kalt FNV-primtallet. Dette hjelper til å blande ting veldig godt.

Trinn 4: Legg til en Dash of Magic (XOR Operation)

Før du tilsetter neste ingrediens, drysser du inn 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 ferdig

Du fortsetter å blande og drysse magi etter hver nye ingrediens til du har behandlet alt.

Trinn 6: Endelig smoothie (hash-verdi)

Når du er ferdig heller du ut smoothien. Den endelige smaken (hash-verdien) er unik for den eksakte kombinasjonen av ingredienser. Hvis du hadde tilsatt enda et ekstra blåbær, ville det smakt helt annerledes.

Versjonen som presenteres her er den originale FNV-1 32-biters versjonen. Det er også en forbedret FNV-1a 32 bit versjon tilgjengelig: Fowler-Noll-Vo FNV1a-32 Hash-kodekalkulator

Del på BlueskyDel på FacebookDel på LinkedInDel på TumblrDel på XDel på LinkedInFest på Pinterest

Mikkel Bang Christensen

Om forfatteren

Mikkel Bang Christensen
Mikkel er skaperen og eieren av miklix.com. Han har over 20 års erfaring som profesjonell dataprogrammerer/programvareutvikler og er for tiden ansatt på fulltid i et stort europeisk IT-selskap. Når han ikke blogger, bruker han fritiden sin på en lang rekke interesser, hobbyer og aktiviteter, noe som til en viss grad kan gjenspeiles i de mange ulike temaene som dekkes på dette nettstedet.