Miklix

Fowler-Noll-Vo FNV1-32 Хэш кодын тооцоолуур

Нийтэлсэн: 2025 оны гуравдугаар сарын 19 20:57:36 (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: Суурийг эхлүүлэх (Offset Basis)

Үүнийг таны холигчид тусгай смүүти суурь хийж буйтай адилхан гэж бодоод үзээрэй. Энэ суурь нь ямар ч орц нэмсэн ч байнга ижилхэн байх болно. FNV-1-д үүнийг "offset basis" гэж нэрлэдэг - зөвхөн нэг тоо, эхний тоо гэж ойлгож болно.

Алхам 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 дээр хуваалцахPinterest дээрх пин

Миккел Кристенсен

Зохиогчийн тухай

Миккел Кристенсен
Миккел бол miklix.com сайтыг бүтээгч, эзэмшигч юм. Тэрээр мэргэжлийн компьютерийн программист/програм хангамж хөгжүүлэгчээр 20 гаруй жил ажилласан туршлагатай бөгөөд одоогоор Европын томоохон мэдээллийн технологийн корпорацид бүтэн цагаар ажиллаж байна. Блог хөтлөөгүй үедээ тэрээр чөлөөт цагаа олон төрлийн сонирхол, хобби, үйл ажиллагаанд зарцуулдаг бөгөөд энэ нь энэ вэб сайтад багтсан олон янзын сэдвүүдэд тодорхой хэмжээгээр тусгагдсан байж магадгүй юм.