دالة التجزئة PJW

دالة التجزئة PJW هي دالة تجزئة غير تشفيرية أنشأها بيتر جيه واينبرغر من مختبرات AT&T Bell.

إصدارات أخرى

تم استخدام نوع مختلف من تجزئة PJW لإنشاء تجزئة ElfHash أو Elf64 المستخدمة في ملفات كائنات Unix بتنسيق ELF .

ابتكر ألين هولوب نسخة محمولة من خوارزمية التجزئة PJW التي احتوت على خطأ برمجي وانتهى بها المطاف في العديد من الكتب الدراسية، كما اعترف مؤلف أحد هذه الكتب لاحقًا. [ 1 ]

الخوارزمية

تتضمن خوارزمية التجزئة PJW إزاحة التجزئة السابقة وإضافة البايت الحالي متبوعًا بتحريك البتات العليا: [ 2 ]

خوارزمية PJW_hash(s) هي uint h := 0 bits := uint size in bits لكل i := 1 إلى |S | h := h << bits/8 + s[i] القيمة العالية := الحصول على أعلى 8 بتات من h من اليسار إذا كانت القيمة العالية لا تساوي صفرًا، h := h xor (high >> bits * 3/4) h := h & ~high إرجاع h

تطبيق

فيما يلي تطبيق الخوارزمية المستخدمة في تنسيق Unix ELF: [ 3 ]

دالة ElfHash طويلة غير مُوقّعة ( متغير ثابت غير مُوقّع * s ) { متغير طويل غير مُوقّع h = 0 ، high ؛ بينما ( * s ) { h = ( h << 4 ) + * s ++ ؛ إذا ( high = h & 0xF0000000 ) h ^= high >> 24 ؛ h &= ~ high ؛ } إرجاع h ؛ }

يفترض هذا الكود المكتوب بلغة C خطأً أن longنوع البيانات هو 32 بت. عندما longيكون عرض المتغير أكبر من 32 بت، كما هو الحال في العديد من أنظمة 64 بت ، يحتوي الكود على خطأ برمجي. [ 4 ]

انظر أيضاً

دوال التجزئة غير المشفرة

مراجع

  1. بينستوك، أندرو (1996). "إعادة صياغة التجزئة" . دكتور دوبز .
  2. "دوال التجزئة" . www.cs.hmc.edu . تم الاطلاع عليه بتاريخ 10-06-2015 .
  3. دار نشر CORPORATE UNIX (1993). واجهة ثنائية لتطبيقات النظام الخامس . ISBN 0-13-100439-5.
  4. "قد يحدث تجاوز في دالة التجزئة ELF" . 12 أبريل 2023. تم الاطلاع عليه بتاريخ 14 أبريل 2023 .