Miklix

Fowler-Noll-Vo FNV1-32 Hashkodräknare

Publicerad: 18 februari 2025 kl. 00:16:07 UTC
Senast uppdaterad: 12 januari 2026 kl. 13:29:23 UTC

Hashkodskalkylator som använder Fowler-Noll-Vo 1 32 bitars (FNV1-32) hashfunktionen för att beräkna en hashkod baserat på textinmatning eller filuppladdning.

Denna sida har maskinöversatts från engelska för att göra den tillgänglig för så många som möjligt. Tyvärr är maskinöversättning ännu inte en fulländad teknik, så fel kan uppstå. Om du föredrar det kan du se den engelska originalversionen här:

Fowler-Noll-Vo FNV1-32 Hash Code Calculator

FNV-1 32-bitars hashfunktionen är en del av Fowler-Noll-Vo (FNV)-familjen av hashfunktioner, utformade för snabb hashning samtidigt som en god fördelning av hashvärden bibehålls. Den används ofta i applikationer som hashtabeller, kontrollsummor och datauppslagningar. Den producerar en 32-bitars (4 byte) hashkod, ofta representerad som ett 8-siffrigt hexadecimalt tal.

Fullständig information: Jag har inte skrivit den specifika implementeringen av hashfunktionen som används på den här sidan. Det är en standardfunktion som ingår i programmeringsspråket PHP. Jag har bara gjort webbgränssnittet för att göra den allmänt tillgänglig här för enkelhetens skull.


Beräkna ny hashkod

Data som skickas eller filer som laddas upp via detta formulär kommer endast att sparas på servern så länge som det tar att generera den begärda hashkoden. De kommer att raderas omedelbart innan resultatet returneras till din webbläsare.

Ingångsdata:



Den skickade texten är UTF-8-kodad. Eftersom hashfunktioner arbetar med binära data kommer resultatet att bli annorlunda än om texten hade en annan kodning. Om du behöver beräkna en hash av en text i en specifik kodning bör du ladda upp en fil i stället.



Om Fowler-Noll-Vo FNV-1 32-bitars hashalgoritmen

Jag är ingen matematiker, men jag ska försöka förklara den här hashfunktionen med hjälp av en analogi som mina icke-matematiker kan förstå. Om du föredrar en vetenskapligt korrekt, skrämmande matematisk förklaring, är jag säker på att du kan hitta den någon annanstans ;-)

Låt oss först tänka på FNV-1-algoritmen som ett recept för att göra en speciell smoothie. Varje ingrediens du lägger till (som frukt, mjölk eller honung) representerar en dataenhet – som bokstäver, siffror eller till och med en hel fil.

Målet är nu att blanda dessa ingredienser på ett mycket specifikt sätt så att även den minsta förändring i receptet (som att lägga till ett extra blåbär) gör att smoothien smakar helt annorlunda. Det är så hashfunktioner fungerar – de skapar en unik "smak" (eller hashvärde) för varje unik uppsättning ingredienser (eller indata).

FNV-1-algoritmen gör detta i flera steg:

Steg 1: Börja med en bas (offsetbas)

Tänk på det här som att hälla en speciell smoothiebas i din mixer. Basen är alltid densamma, oavsett vilka ingredienser du tillsätter. I FNV-1 kallas detta för "offsetbasis" - bara ett fint startnummer.

Steg 2: Tillsätt ingredienserna en i taget (bearbetning av data)

Nu börjar du lägga till dina ingredienser, en i taget – låt oss säga en jordgubbe, sedan en banan och sedan lite honung. Var och en av dessa representerar en byte data.

Steg 3: Blanda med en hemlig multiplikator (FNV Prime)

Efter att du har tillsatt varje ingrediens trycker du på mixningsknappen, men här är twisten: mixern multiplicerar allt med ett hemligt "magiskt tal" som kallas FNV-primtal. Detta hjälper till att mixa saker riktigt bra.

Steg 4: Lägg till en gnutta magi (XOR-operation)

Innan du tillsätter nästa ingrediens strör du över lite magiskt damm (detta är XOR-operationen). Det är som att vända smaken på oväntade sätt, och se till att även små förändringar gör stor skillnad.

Steg 5: Upprepa tills det är klart

Du fortsätter att mixa och strö magi efter varje ny ingrediens tills du har bearbetat allt.

Steg 6: Slutlig smoothie (hashvärde)

När du är klar häller du upp smoothien. Den slutliga smaken (hashvärdet) är unik för just den kombinationen av ingredienser. Om du hade tillsatt bara ett extra blåbär skulle det smaka helt annorlunda.

Versionen som presenteras här är den ursprungliga 32-bitarsversionen av FNV-1. Det finns också en förbättrad 32-bitarsversion av FNV-1a tillgänglig: Länk

Vidare läsning

Om du gillade det här inlägget kanske du också gillar dessa förslag:


Dela på BlueskyDela på FacebookDela på LinkedInDela på TumblrDela på XDela på LinkedInFäst på Pinterest

Mikkel Christensen

Om författaren

Mikkel Christensen
Mikkel är skaparen och ägaren av miklix.com. Han har över 20 års erfarenhet som professionell datorprogrammerare/mjukvaruutvecklare och är för närvarande heltidsanställd på ett stort europeiskt IT-bolag. När han inte bloggar ägnar han sin fritid åt en mängd olika intressen, hobbies och aktiviteter, vilket i viss mån kan återspeglas i de olika ämnen som behandlas på den här webbplatsen.