Miklix

حاسبة رمز التجزئة Fowler-Noll-Vo FNV1a-64

نُشرت: ١٧ فبراير ٢٠٢٥ م في ٩:٤٦:١٩ م UTC
آخر تحديث: ١٢ يناير ٢٠٢٦ م في ١:٢٧:٢٦ م 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: ابدأ بقاعدة (قاعدة إزاحة)

تخيل الأمر كأنك تصبّ قاعدة عصير مميزة في الخلاط. هذه القاعدة تبقى ثابتة مهما أضفت من مكونات. في نظام FNV-1، يُطلق على هذا اسم "قاعدة الإزاحة" - وهو مجرد رقم ابتدائي مُنمّق.

الخطوة الثانية: إضافة المكونات واحداً تلو الآخر (معالجة البيانات)

الآن تبدأ بإضافة مكوناتك، واحدة تلو الأخرى - لنفترض فراولة، ثم موزة، ثم بعض العسل. كل من هذه المكونات يمثل بايت من البيانات.

الخطوة 3: امزج باستخدام مُضاعِف سري (FNV Prime)

بعد إضافة كل مكون، تضغط على زر الخلط، ولكن المفاجأة هنا: يقوم الخلاط بضرب كل شيء برقم سحري سري يُسمى FNV prime. هذا يساعد على مزج المكونات جيدًا.

الخطوة الرابعة: أضف لمسة سحرية (عملية XOR)

قبل إضافة المكون التالي، تُضيف لمسة سحرية (وهي عملية XOR). إنها أشبه بتغيير النكهة بطرق غير متوقعة، مما يضمن أن حتى التغييرات الصغيرة تُحدث فرقًا كبيرًا.

الخطوة الخامسة: كرر حتى الانتهاء

تستمر في المزج ورشّ المكونات السحرية بعد كل مكون جديد حتى تنتهي من معالجة كل شيء.

الخطوة السادسة: العصير النهائي (قيمة الهاش)

بعد الانتهاء، اسكب العصير. الطعم النهائي (قيمة الهاش) فريدٌ من نوعه، ويعتمد على مزيج المكونات هذا تحديدًا. لو أضفت حبة توت أزرق إضافية، لكان طعمه مختلفًا تمامًا.

النسخة المعروضة هنا هي نسخة FNV-1a المحسّنة ذات 64 بت. إذا كنت بحاجة إلى النسخة الأصلية، فلديّ أيضًا آلة حاسبة لذلك: الرابط

قراءات إضافية

إذا أعجبك هذا المنشور، فقد تعجبك أيضًا هذه الاقتراحات:


شارك على بلوسكايشارك على الفيسبوكشارك على لينكدإنشارك على تمبلرشارك على إكسشارك على لينكدإنثبت على بينتريست

ميكيل كريستنسن

عن المؤلف

ميكيل كريستنسن
ميكيل هو مؤسس ومالك موقع miklix.com. يتمتع بخبرة تزيد عن 20 عامًا كمبرمج كمبيوتر/مطور برامج محترف ويعمل حاليًا بدوام كامل في إحدى شركات تكنولوجيا المعلومات الأوروبية الكبرى. عندما لا يقوم بالتدوين، يقضي وقت فراغه في مجموعة واسعة من الاهتمامات والهوايات والأنشطة، والتي قد تنعكس إلى حد ما في تنوع الموضوعات التي يغطيها هذا الموقع.