دالة التجزئة 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 ]
انظر أيضاً
مراجع
- ↑ بينستوك، أندرو (1996). "إعادة صياغة التجزئة" . دكتور دوبز .
- ↑ "دوال التجزئة" . www.cs.hmc.edu . تم الاطلاع عليه بتاريخ 10-06-2015 .
- ↑ دار نشر CORPORATE UNIX (1993). واجهة ثنائية لتطبيقات النظام الخامس . ISBN 0-13-100439-5.
- ↑ "قد يحدث تجاوز في دالة التجزئة ELF" . 12 أبريل 2023. تم الاطلاع عليه بتاريخ 14 أبريل 2023 .
فئة :
- دالة التجزئة (غير التشفيرية)
