Miklix

Fowler-Noll-Vo FNV1-32 հեշ կոդի Հաշվիչ

Հրապարակվել է՝ 18 փետրվարի, 2025 թ., 00:17:24 UTC

Հեշ կոդի հաշվիչ, որն օգտագործում է Fowler-Noll-Vo 1 32 բիթ (FNV1-32) հեշ ֆունկցիան՝ տեքստի մուտքագրման կամ ֆայլի վերբեռնման հիման վրա հեշ կոդը հաշվարկելու համար:

Այս էջը ավտոմատ կերպով թարգմանվել է անգլերենից՝ հնարավորինս շատ մարդկանց համար հասանելի դարձնելու համար: Ցավոք, մեքենայական թարգմանությունը դեռ կատարելագործված տեխնոլոգիա չէ, ուստի կարող են սխալներ առաջանալ: Եթե ​​նախընտրում եք, կարող եք դիտել բնօրինակ անգլերեն տարբերակը այստեղ.

Fowler-Noll-Vo FNV1-32 Hash Code Calculator

FNV-1 32-բիթանոց հեշ ֆունկցիան Fowler–Noll–Vo (FNV) հեշ ֆունկցիաների ընտանիքի մի մասն է, որը նախատեսված է արագ հեշավորման համար՝ պահպանելով հեշ արժեքների լավ բաշխումը։ Այն սովորաբար օգտագործվում է այնպիսի ծրագրերում, ինչպիսիք են հեշ աղյուսակները, ստուգիչ գումարները և տվյալների որոնումները: Այն արտադրում է 32 բիթ (4 բայթ) հեշ կոդ, որը հաճախ ներկայացված է որպես 8 նիշանոց տասնվեցական թիվ:

Ամբողջական բացահայտում. ես չեմ գրել այս էջում օգտագործվող հեշ ֆունկցիայի կոնկրետ իրականացումը: Այն ստանդարտ ֆունկցիա է, որը ներառված է PHP ծրագրավորման լեզվով: Ես միայն վեբ ինտերֆեյսը դարձրեցի, որպեսզի այն հանրությանը հասանելի դարձնեմ այստեղ՝ հարմարության համար:


Հաշվարկել նոր հեշ կոդը

Ներկայացված տվյալները կամ այս ձևի միջոցով վերբեռնված ֆայլերը կպահվեն սերվերում միայն այնքան ժամանակ, որքան պահանջվում է պահանջվող հեշ կոդը ստեղծելու համար: Այն կջնջվի անմիջապես նախքան արդյունքը ձեր դիտարկիչին վերադարձնելը:

Մուտքային տվյալներ.



Ներկայացված տեքստը UTF-8 կոդավորված է: Քանի որ հեշ ֆունկցիաները գործում են երկուական տվյալների վրա, արդյունքը տարբեր կլինի, քան եթե տեքստը լիներ մեկ այլ կոդավորման մեջ: Եթե ​​Ձեզ անհրաժեշտ է հաշվարկել տեքստի հեշը կոնկրետ կոդավորման մեջ, փոխարենը պետք է ֆայլ վերբեռնեք:



Fowler-Noll-Vo FNV-1 32 բիթ հեշ ալգորիթմի մասին

Ես մաթեմատիկոս չեմ, բայց կփորձեմ բացատրել այս հեշ ֆունկցիան՝ օգտագործելով անալոգիա, որը կարող են հասկանալ իմ ոչ մաթեմատիկոս ընկերները: Եթե ​​դուք նախընտրում եք գիտականորեն ճիշտ, սարսափազդու մաթեմատիկական բացատրություն, վստահ եմ, որ կարող եք դա գտնել այլ տեղ ;-)

Նախ, եկեք մտածենք FNV-1 ալգորիթմի մասին, ինչպես հատուկ սմուզի պատրաստելու բաղադրատոմս: Ձեր ավելացրած յուրաքանչյուր բաղադրիչ (օրինակ՝ մրգեր, կաթ կամ մեղր) ներկայացնում է տվյալների մի հատված՝ տառեր, թվեր կամ նույնիսկ մի ամբողջ ֆայլ:

Այժմ նպատակն է խառնել այս բաղադրիչները շատ կոնկրետ ձևով, որպեսզի բաղադրատոմսի նույնիսկ ամենափոքր փոփոխությունը (ինչպես մեկ հավելյալ հապալասի ավելացում) դարձնի սմուզիի համը բոլորովին այլ: Ահա թե ինչպես են աշխատում հեշ ֆունկցիաները. նրանք ստեղծում են յուրահատուկ «համ» (կամ հեշ արժեք) բաղադրիչների յուրաքանչյուր եզակի հավաքածուի (կամ մուտքային տվյալների) համար:

Ինչպես դա անում է FNV-1 ալգորիթմը, բազմաքայլ գործընթաց է.

Քայլ 1. Սկսեք բազայից (օֆսեթ հիմք)

Մտածեք այս մասին, ինչպես ձեր բլենդերի մեջ հատուկ սմուզի հիմք լցնելը: Այս հիմքը միշտ նույնն է, անկախ նրանից, թե ինչ բաղադրիչներ եք ավելացնում: FNV-1-ում սա կոչվում է «օֆսեթ հիմք»՝ պարզապես շքեղ մեկնարկային համար:

Քայլ 2. Բաղադրիչները մեկ առ մեկ ավելացնել (տվյալների մշակում)

Այժմ դուք սկսում եք ավելացնել ձեր բաղադրիչները մեկ առ մեկ՝ ասենք ելակ, հետո բանան, հետո մի քիչ մեղր: Սրանցից յուրաքանչյուրը ներկայացնում է տվյալների բայթ:

Քայլ 3. Խառնել գաղտնի բազմապատկիչով (FNV Prime)

Յուրաքանչյուր բաղադրիչ ավելացնելուց հետո սեղմում եք խառնուրդի կոճակը, բայց ահա շրջադարձը. բլենդերը ամեն ինչ բազմապատկում է գաղտնի «կախարդական թվով», որը կոչվում է FNV prime: Սա օգնում է իրոք լավ խառնել իրերը:

Քայլ 4. Ավելացնել մոգության գծիկ (XOR գործողություն)

Հաջորդ բաղադրիչը ավելացնելուց առաջ մի փոքր կախարդական փոշի եք շաղ տալիս (սա XOR գործողությունն է): Դա նման է համը անսպասելի ձևով շուռ տալու՝ ապահովելով, որ նույնիսկ փոքր փոփոխությունները մեծ տարբերություն են ստեղծում:

Քայլ 5. Կրկնել մինչև ավարտը

Դուք շարունակում եք խառնել և շաղ տալ կախարդանքը յուրաքանչյուր նոր բաղադրիչից հետո, մինչև չմշակեք ամեն ինչ:

Քայլ 6. Վերջնական սմուզի (հեշի արժեք)

Ավարտելուց հետո դուք լցնում եք սմուզին: Վերջնական համը (հաշի արժեքը) եզակի է բաղադրիչների այդ ճշգրիտ համակցության համար: Եթե ​​ավելացնեիք թեկուզ մեկ հավելյալ հապալաս, այն բոլորովին այլ համ կունենար։

Այստեղ ներկայացված տարբերակը բնօրինակ FNV-1 32 բիթ տարբերակն է: Գոյություն ունի նաև բարելավված FNV-1a 32 բիթանոց տարբերակ՝ Fowler-Noll-Vo FNV1a-32 հեշ կոդի Հաշվիչ

Կիսվեք Bluesky-ումԿիսվել Facebook-ումԿիսվեք LinkedIn-ումԿիսվեք Tumblr-ումԿիսվեք X-ումԿիսվեք LinkedIn-ումԿպցնել Պինթրեսթում

Միկել Բանգ Քրիստենսեն

Հեղինակի մասին

Միկել Բանգ Քրիստենսեն
Mikkel-ը miklix.com-ի ստեղծողն ու սեփականատերն է: Նա ունի ավելի քան 20 տարվա աշխատանքային փորձ՝ որպես պրոֆեսիոնալ համակարգչային ծրագրավորող/ծրագրային ապահովման մշակող և ներկայումս լրիվ դրույքով աշխատում է եվրոպական խոշոր ՏՏ կորպորացիայի մեջ: Երբ նա բլոգ չի գրում, նա իր ազատ ժամանակն անցկացնում է հետաքրքրությունների, հոբբիների և գործունեության լայն շրջանակի վրա, որոնք որոշ չափով կարող են արտացոլվել այս կայքում ընդգրկված թեմաների բազմազանության մեջ: