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 програмчлалын хэлэнд багтсан стандарт функц юм. Би зөвхөн вэб интерфэйсийг энд олон нийтэд нээлттэй болгох үүднээс хийсэн.
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 Хэш кодын тооцоолуур