Miklix

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

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

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

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

Fowler-Noll-Vo FNV1a-32 Hash Code Calculator

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

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

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


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

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

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



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



Fowler-Noll-Vo FNV-1a 32 бит Хэш Алгоритмын Тухай

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

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

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

FNV-1 алгоритм үүнийг хэрхэн хийдэг вэ гэвэл олон алхамтай процесс юм:

Алхам 1: Суурийг эхлэх (Offset Basis)

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

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

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

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

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

Алхам 4: Шидэт бага зэрэг нэмэх (XOR үйлдэл)

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

Алхам 5: Бүх зүйлийг боловсруултал давтана

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

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

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

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

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

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

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

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