Miklix

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

Нийтэлсэн: 2025 оны гуравдугаар сарын 19 20:57:01 (UTC)

Текст оруулах эсвэл файл байршуулахад үндэслэн хэш кодыг тооцоолохын тулд Fowler-Noll-Vo 1a 64 бит (FNV1a-64) хэш функцийг ашигладаг хэш кодын тооцоолуур.

Энэ хуудсыг аль болох олон хүнд хүртээмжтэй болгох үүднээс англи хэлнээс орчуулсан. Харамсалтай нь машин орчуулга нь төгс төгөлдөр технологи болоогүй байгаа тул алдаа гарч болзошгүй. Хэрэв та хүсвэл англи хэл дээрх эх хувилбарыг эндээс үзэх боломжтой.

Fowler-Noll-Vo FNV1a-64 Hash Code Calculator

FNV-1a 64 битийн хэш функц нь Fowler–Noll–Vo (FNV) хэш функцүүдийн гэр бүлийн нэг хэсэг бөгөөд хэш утгын сайн хуваарилалтыг хадгалахын зэрэгцээ хурдан хэш хийх зориулалттай. Энэ нь ихэвчлэн хэш хүснэгт, шалгах нийлбэр, өгөгдөл хайх зэрэг програмуудад ашиглагддаг. Энэ нь 64 бит (8 байт) хэш код үүсгэдэг бөгөөд ихэвчлэн 16 оронтой арван арван тоогоор илэрхийлэгддэг.

FNV-1a хувилбар нь анхны FNV-1 функцээс илүү сайжруулсан, хамгаалалт сайтай хувилбар юм.

Бүрэн тодруулга: Би энэ хуудсанд ашигласан хэш функцийн тодорхой хэрэгжилтийг бичээгүй. Энэ нь PHP програмчлалын хэлэнд багтсан стандарт функц юм. Би зөвхөн вэб интерфэйсийг энд олон нийтэд нээлттэй болгох үүднээс хийсэн.


Шинэ хэш кодыг тооцоолох

Энэ маягтаар илгээсэн өгөгдөл эсвэл байршуулсан файлууд сервер дээр зөвхөн хүссэн хэш кодыг үүсгэх хүртэл л хадгалагдах болно. Үр дүн нь таны хөтөч рүү буцаж ирэхээс өмнө шууд устгагдах болно.

Өгөгдөл оруулах:



Илгээсэн текст UTF-8 кодлогдсон байна. Хэш функц нь хоёртын өгөгдөл дээр ажилладаг тул үр дүн нь текст өөр кодчилолд байсантай харьцуулахад өөр байх болно. Хэрэв та тодорхой кодчилол дахь текстийн хэшийг тооцоолох шаардлагатай бол оронд нь файл байршуулах хэрэгтэй.



Fowler-Noll-Vo FNV-1a 64 бит Хэш Алгоритмтай Танилц

Би математикч хүн биш ч, энэ хэш функцыг өөрийн хамтран ажилладаг математик биш хүмүүст ойлгомжтой тайлбарлахыг хичээх болно. Хэрэв та шинжлэх ухааны талаас зөв, аймшигтай математикийн тайлбар хүсч байвал, би итгэлтэйгээр та түүнийг өөр газар олж чадна гэж бодож байна ;-)

Эхлээд FNV-1 алгоритмыг тусгай жүүс хийх жор гэж төсөөлөөд үзье. Та нэмэх бүрийн орц (жишээ нь жимс, сүү, эсвэл зөгийн бал) нь өгөгдлийн нэг хэсэгийг (үсэг, тоо, эсвэл бүр бүх файл) төлөөлж байгаа гэж үзье.

Одоо зорилго бол эдгээр орцыг маш тодорхой аргаар холих явдал бөгөөд ингэснээр жорын хамгийн жижиг өөрчлөлт (жишээ нь нэг илүү хөх торт нэмэх) нь жүүсийн амтыг бүрэн өөрчилдөг. Энэ бол хэш функцүүдийн ажиллах арга юм - тэд өгөгдлийн аль ч өвөрмөц орц (эсвэл оруулсан өгөгдөл)-д зориулсан өвөрмөц "амт" (эсвэл хэш утга) үүсгэдэг.

FNV-1 алгоритм үүнийг хэрхэн гүйцэтгэдэг нь олон шаттай үйл явц юм:

Алхам 1: Суурь (Offset Basis)-ээр эхлэх

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

Алхам 2: Орцоо нэг нэгээр нэмэх (Өгөгдөл боловсруулах)

Одоо та орцоо нэг бүрчлэн нэмэх болно - жишээ нь нэг сарнай жимс, дараа нь нэг банана, дараа нь бага зэрэг зөгийн бал. Эдгээр бүр нь өгөгдлийн нэг байт юм.

Алхам 3: Нууц үржүүлэгчтэй холих (FNV Prime)

Бүх орцоо нэмсэн дараа, та холигчийг асаана, гэхдээ энд нэг эргэлт бий: холигч нь бүх зүйлийг нууц "ид шидийн тоо" гэгддэг FNV prime-р үржүүлдэг. Энэ нь бүх зүйлийг маш сайн холихад тусалдаг.

Алхам 4: Тал бүрийн ид шидийг нэмэх (XOR үйлдэл)

Дараагийн орцоо нэмэхийн өмнө, та бага зэрэг ид шидийн тоос шороо нэмж өгдөг (энэ нь XOR үйлдэл юм). Энэ нь амтыг хүлээж байгаагүй аргаараа эргүүлэх мэт юм, ингэснээр бүр жижиг өөрчлөлтүүд ч том ялгааг үүсгэдэг.

Алхам 5: Дуусах хүртэл давтах

Та бүхий л орцоо нэг бүрчлэн нэмэхэд холих, ид шидийг цацах үйл явцыг үргэлжлүүлсээр бүх зүйлсийг боловсруулах хүртэл.

Алхам 6: Сүүлчийн жүүс (Хэш утга)

Та дууссан үедээ жүүсээ хийнэ. Эцсийн амт (хэш утга) нь яг тэр орцын хослолд зориулсан өвөрмөц байдаг. Хэрэв та нэг илүү хөх торт нэмсэн бол тэр амт нь бүрэн өөр болно.

Энд танилцуулсан хувилбар нь сайжруулсан FNV-1a 64 бит хувилбар юм. Хэрэв та анхны хувилбарыг хэрэгтэй бол би түүнийг тооцоолууртайгаар санал болгоно: Fowler-Noll-Vo FNV1-64 Хэш кодын тооцоолуур

Bluesky дээр хуваалцаарайFacebook дээр хуваалцахLinkedIn дээр хуваалцахTumblr дээр хуваалцахX дээр хуваалцаарайLinkedIn дээр хуваалцахPinterest дээрх пин

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

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

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