Fowler-Noll-Vo FNV1-64 հեշ կոդի Հաշվիչ
Հրապարակվել է՝ 17 փետրվարի, 2025 թ., 21:36:32 UTC
Վերջին թարմացումը՝ 12 հունվարի, 2026 թ., 13:26:59 UTC
Fowler-Noll-Vo FNV1-64 Hash Code Calculator
FNV-1 64-բիթանոց հեշ ֆունկցիան Ֆաուլեր-Նոլ-Վո (FNV) հեշ ֆունկցիաների ընտանիքի մաս է կազմում, որը նախատեսված է արագ հեշավորման համար՝ պահպանելով հեշ արժեքների լավ բաշխումը: Այն լայնորեն օգտագործվում է հեշ աղյուսակների, ստուգիչ գումարների և տվյալների որոնման նման ծրագրերում: Այն ստեղծում է 64 բիթանոց (8 բայթ) հեշ կոդ, որը հաճախ ներկայացվում է որպես 16 նիշանոց տասնվեցական թիվ:
Ամբողջական բացահայտում. ես չեմ գրել այս էջում օգտագործվող հեշ ֆունկցիայի կոնկրետ իրականացումը: Այն ստանդարտ ֆունկցիա է, որը ներառված է PHP ծրագրավորման լեզվով: Ես միայն վեբ ինտերֆեյսը դարձրեցի, որպեսզի այն հանրությանը հասանելի դարձնեմ այստեղ՝ հարմարության համար:
Ֆաուլեր-Նոլ-Վո FNV-1 64 բիթանոց հեշ ալգորիթմի մասին
Ես մաթեմատիկոս չեմ, բայց կփորձեմ բացատրել այս հեշ ֆունկցիան՝ օգտագործելով մի անալոգիա, որը իմ ոչ մաթեմատիկոս գործընկերները կարող են հասկանալ։ Եթե նախընտրում եք գիտականորեն ճիշտ, վախեցնող մաթեմատիկական բացատրություն, վստահ եմ, որ կարող եք այն գտնել այլուր ;-)
Նախ, եկեք FNV-1 ալգորիթմը պատկերացնենք որպես հատուկ սմութի պատրաստելու բաղադրատոմս: Ձեր ավելացրած յուրաքանչյուր բաղադրիչ (օրինակ՝ մրգեր, կաթ կամ մեղր) ներկայացնում է տվյալների մի կտոր՝ տառեր, թվեր կամ նույնիսկ ամբողջական ֆայլ:
Հիմա նպատակն է այս բաղադրիչները խառնել շատ յուրահատուկ ձևով, որպեսզի բաղադրատոմսի նույնիսկ ամենափոքր փոփոխությունը (օրինակ՝ մեկ լրացուցիչ հապալաս ավելացնելը) սմութիի համը բոլորովին այլ դարձնի։ Ահա թե ինչպես են աշխատում հեշ ֆունկցիաները՝ դրանք ստեղծում են յուրահատուկ «համ» (կամ հեշ արժեք) բաղադրիչների (կամ մուտքային տվյալների) յուրաքանչյուր յուրահատուկ հավաքածուի համար։
FNV-1 ալգորիթմը սա անում է բազմաստիճան գործընթացով.
Քայլ 1. Սկսեք բազայից (օֆսեթային հիմք)
Պատկերացրեք սա նման է բլենդերի մեջ սմութիի հատուկ հիմք լցնելուն։ Այս հիմքը միշտ նույնն է՝ անկախ նրանից, թե ինչ բաղադրիչներ եք ավելացնում։ FNV-1-ում սա կոչվում է «օֆսեթային հիմք»՝ պարզապես ֆանտաստիկ մեկնարկային թիվ։
Քայլ 2. Մեկ առ մեկ ավելացնել բաղադրիչները (տվյալների մշակում)
Հիմա դուք սկսում եք ավելացնել ձեր բաղադրիչները՝ մեկ առ մեկ, օրինակ՝ ելակ, ապա բանան, ապա մի քիչ մեղր։ Դրանցից յուրաքանչյուրը ներկայացնում է տվյալների մեկ բայթ։
Քայլ 3. Խառնել գաղտնի բազմապատկիչի հետ (The FNV Prime)
Յուրաքանչյուր բաղադրիչը ավելացնելուց հետո դուք սեղմում եք խառնման կոճակը, բայց ահա թե ինչն է հետաքրքիր. բլենդերը ամեն ինչ բազմապատկում է գաղտնի «կախարդական թվով», որը կոչվում է FNV prime: Սա օգնում է շատ լավ խառնել ամեն ինչ:
Քայլ 4. Ավելացնել կախարդանքի մի կաթիլ (XOR գործողություն)
Հաջորդ բաղադրիչը ավելացնելուց առաջ դուք մի փոքր կախարդական փոշի եք ցանում (սա XOR գործողությունն է): Դա նման է համը անսպասելի ձևերով փոխելուն՝ ապահովելով, որ նույնիսկ փոքր փոփոխությունները մեծ տարբերություն առաջացնեն:
Քայլ 5. Կրկնել մինչև ավարտվի
Դուք շարունակում եք խառնել և կախարդական բան ցանել յուրաքանչյուր նոր բաղադրիչից հետո, մինչև ամեն ինչ մշակեք։
Քայլ 6. Վերջնական սմութի (հեշ արժեք)
Երբ ավարտես, սմուզին լցնում ես։ Վերջնական համը (հեշի արժեքը) յուրահատուկ է բաղադրիչների հենց այդ համադրության համար։ Եթե ավելացնեիր թեկուզ մեկ լրացուցիչ հապալաս, այն բոլորովին այլ համ կունենար։
Այստեղ ներկայացված տարբերակը FNV-1-ի 64 բիթանոց սկզբնական տարբերակն է։ Հասանելի է նաև FNV-1a-ի 64 բիթանոց բարելավված տարբերակը՝ հղում
Լրացուցիչ ընթերցանություն
Եթե ձեզ դուր եկավ այս գրառումը, ձեզ կարող են նաև դուր գալ այս առաջարկները.
