Fowler-Noll-Vo FNV1-64 maišos kodo skaičiuotuvas
Paskelbta: 2025 m. vasario 17 d. 21:34:56 UTC
Maišos kodo skaičiuotuvas, kuris naudoja Fowler-Noll-Vo 1 64 bitų (FNV1-64) maišos funkciją, kad apskaičiuotų maišos kodą pagal teksto įvestį arba failo įkėlimą.Fowler-Noll-Vo FNV1-64 Hash Code Calculator
FNV-1 64 bitų maišos funkcija yra Fowler–Noll–Vo (FNV) maišos funkcijų šeimos dalis, skirta greitai maišyti, išlaikant gerą maišos reikšmių paskirstymą. Jis dažniausiai naudojamas tokiose programose kaip maišos lentelės, kontrolinės sumos ir duomenų paieškos. Jis sukuria 64 bitų (8 baitų) maišos kodą, dažnai pateikiamą kaip 16 skaitmenų šešioliktainis skaičius.
Visiškai atskleidžiu informaciją: šiame puslapyje naudojamos hash funkcijos konkrečios realizacijos nerašiau. Tai standartinė PHP programavimo kalbos funkcija. Aš tik sukūriau žiniatinklio sąsają, kad patogumo dėlei ji būtų viešai prieinama.
Apie Fowler-Noll-Vo FNV-1 64 bitų maišos algoritmą
Nesu matematikas, bet pabandysiu paaiškinti šią maišos funkciją naudodamas analogiją, kurią gali suprasti mano kolegos ne matematikai. Jei jums labiau patinka moksliškai teisingas, baisus matematinis paaiškinimas, aš tikiu, kad jį rasite kitur ;-)
Pirma, pagalvokime apie FNV-1 algoritmą kaip apie specialaus kokteilio gaminimo receptą. Kiekvienas jūsų pridėtas ingredientas (pvz., vaisiai, pienas ar medus) yra duomenų dalis, pvz., raidės, skaičiai ar net visas failas.
Dabar tikslas yra sumaišyti šiuos ingredientus labai specifiniu būdu, kad net ir menkiausias recepto pakeitimas (pvz., pridėjus vieną papildomą mėlynę) kokteilio skonis būtų visiškai kitoks. Taip veikia maišos funkcijos – jos sukuria unikalų „skonį“ (arba maišos vertę) kiekvienam unikaliam ingredientų rinkiniui (arba įvesties duomenims).
Tai, kaip FNV-1 algoritmas tai daro, yra kelių etapų procesas:
1 veiksmas: pradėkite nuo bazės (offsetinio pagrindo)
Pagalvokite apie tai kaip į trintuvą įpylę specialaus kokteilio pagrindo. Šis pagrindas visada yra tas pats, nesvarbu, kokius ingredientus pridėsite. FNV-1 tai vadinama „offsetiniu pagrindu“ – tik išgalvotu pradiniu numeriu.
2 veiksmas: po vieną pridėkite ingredientų (duomenų apdorojimas)
Dabar pradedate dėti savo ingredientus po vieną – tarkime, braškę, tada bananą, tada šiek tiek medaus. Kiekvienas iš jų reiškia duomenų baitą.
3 veiksmas: sumaišykite su slaptu daugikliu (FNV Prime)
Pridėję kiekvieną ingredientą, paspaudžiate maišymo mygtuką, bet štai toks posūkis: maišytuvas viską padaugina iš slapto „stebuklingo skaičiaus“, vadinamo FNV pirminiu. Tai padeda labai gerai sumaišyti dalykus.
4 veiksmas: pridėkite šiek tiek magijos (XOR operacija)
Prieš pridėdami kitą ingredientą, pabarstykite šiek tiek stebuklingų dulkių (tai yra XOR operacija). Tai tarsi netikėtai pakeistas skonis, užtikrinantis, kad net nedideli pakeitimai padarys didelį skirtumą.
5 veiksmas: kartokite, kol baigsite
Po kiekvieno naujo ingrediento nuolat maišote ir purškiate magijos, kol viską apdorosite.
6 veiksmas: galutinis kokteilis (maišos vertė)
Baigę išpilkite kokteilį. Galutinis skonis (maišos vertė) yra unikalus tam tikslui ingredientų deriniui. Jei būtum pridėjęs nors vieną papildomą mėlynę, jos skonis būtų visai kitoks.
Čia pateikta versija yra originali FNV-1 64 bitų versija. Taip pat yra patobulinta FNV-1a 64 bitų versija: Fowler-Noll-Vo FNV1a-64 maišos kodo skaičiuoklė