ما هي وظيفة التجزئة؟
إنه شيء يتم استخدامه في جميع مجالات علوم الكمبيوتر.
دالة التجزئة هي ببساطة وظيفة تولد قيمة ذات طول ثابت لكل إدخال تحصل عليه.
حسنا.
ماذا يعني ذلك؟
حسنًا ، لدي هنا مولد تجزئة MD5.
MD5 هو نوع وظيفة التجزئة وهناك العديد والعديد من الأنواع التي ربما تكون قد سمعت بها عن SHA one و SHA 256
والعديد من الأنواع الأخرى.
باستخدام وظيفة التجزئة هذه.
دعونا نرى ماذا سيحدث إذا فعلت ذلك.
مرحبًا.
ترى ذلك على الفور.
يقوم MD5 بتجزئة هذه السلسلة وتحويلها إلى هراء.
هذا ما تفعله دالة التجزئة.
نعطيها مدخلاً وتولد الوظيفة بعض الأنماط العشوائية.
الآن هناك بعض الجوانب الرئيسية لوظائف التجزئة.
الأول هو أنها طريقة واحدة.
بمعنى أنه إذا أعطيت شخصًا ما هذا ، فليس لديهم أي فكرة عن ماهية المدخلات.
ومن المستحيل عمليًا بالنسبة لي أن يكون لدي أي فكرة عن ماهية المدخلات.
والثاني هو أنه بغض النظر عن عدد المرات التي أضع فيها مرحبًا ، فسيكون الأمر نفسه.
لكن بمجرد أن أغير شيئًا واحدًا ، فإنه سيغير الناتج تمامًا.
إذا عدت إلى مرحبًا و.
شاهدني تغيرت للتو إلى حرف H الكبير ، حتى الحرف الكبير.
لذلك يبدأ بخمسة D لأنه إذا قمت بعمل حرف H ، فسيكون الأمر مختلفًا تمامًا مرة أخرى.
وبالنظر إلى هذا ، يمكننا على الأقل قول ذلك.
همم.
لا أعرف ما هو مفيد من أجله ، لكن الشيء الوحيد الذي أعرفه هو أنه بغض النظر عن أي شيء ، إذا أعطيته نفس
المدخلات ، فسوف يعطيني نفس النتيجة.
لكن ليس لدي أي فكرة عن كيفية تحويل هذا مرة أخرى إلى.
مرحبًا.
هذا ما نسميه المستقل أو المستقل.
هناك طرق نطق مختلفة.
لست متأكدًا حقًا من أيهما ، لكنها طريقة رائعة للقول أن الوظيفة المعطاة لمدخلات
تنتج دائمًا نفس المخرجات.
الآن ، الميزة الوحيدة ولماذا نرغب في استخدام هذا في بنية البيانات هي أننا
نحصل على وصول سريع إلى البيانات حقًا لأن كل ما علي فعله للعثور على العنب أو عنب نقطة السلة هو تمرير العنب إلى شيء مثل تجزئة
MD5.
يقوم بإنشاء هذا الرقم لي وأعرف على الفور مكانه في ذاكرتي على جهاز الكمبيوتر الخاص بنا.
لكن هذا لا يبدو كعنوان ، أليس كذلك؟
من الناحية الفنية ، ستأخذ وظيفة التجزئة التي نستخدمها لجداول التجزئة العنب
، وتولد نوعًا من الهراء ، ثم تحويلها إلى مساحة فهرس أو مساحة عنوان تعتمد على هذا الرقم.
كما ترى ، على عكس السباق الذي قمنا فيه للتو بطلب الفهارس بجداول التجزئة ، كل ما علينا فعله هو إعطائه مفتاحًا
ونعرف بالضبط مكان هذا العنصر في ذاكرتنا.
لكن قد تتساءل ، وظيفة تجزئة الصندوق الأسود هذه ، ألا تؤدي إلى إبطاء الأمور؟
لأنه في كل مرة نريد إضافة خاصية.
وقيمة عنب و 10000 لجدول تجزئة.
علينا تشغيلها من خلال وظيفة التجزئة حتى نتمكن من تحديد مكان وضعها في الذاكرة.
وإذا كنت قد لاحظت هذا العمل الجيد ، فهذا عامل كبير.
لا تريد أن يستغرق هذا وقتًا طويلاً لأنه ، حسنًا ، في كل مرة تضيف فيها خاصية إلى الذاكرة
أو تسترجع خاصية إلى الذاكرة ، لأننا ، مرة أخرى ، نرسل عنب المفتاح في وظيفة التجزئة إلى
تجد من أين تحصل عليه.
نحن بحاجة إلى أن يكون هذا سريعًا حقًا.
وتحت الغطاء ، تذكر ، نظرًا لوجود جداول التجزئة بجميع اللغات ، يتم تنفيذها
بوظيفة تجزئة مثالية سريعة حقًا.
كملاحظة جانبية.
تستغرق وظائف التجزئة مثل SHA 256 وقتًا طويلاً جدًا لإنشاء التجزئة.
وهي دالة تجزئة شديدة التعقيد تُستخدم كثيرًا في أماكن مثل التشفير حيث تريد أن يستغرق
هذا وقتًا أطول ، لكن هذا خارج نطاق هذه الدورة التدريبية.
إذا كنت مهتمًا ، فإنني أوصيك بالتحقق من الاختلافات بين هذين.
للمراجعة.
لدينا مفتاح هو العنب.
نرسلها من خلال دالة تجزئة تقوم بتجزئة شيء ما حقًا ، سريعًا
حقًا ، ثم نرسم كل ما جاء به الهاش في عنوان الذاكرة حيث نريد تخزيننا.
البيانات هي عنب 10000.
وعندما يتعلق الأمر بوظائف التجزئة ، عادة ما تترك هذا لأي إطار عمل أو لغة
تستخدمها.
ونفترض عادةً تعقيدًا زمنيًا أو تدوينًا قديمًا كبيرًا لواحد ، لأن هذا يحدث سريعًا
حقًا.
حسنا.
الآن بعد أن فهمنا ما يفعله هذا الصندوق الأسود ، دعنا نتحدث قليلاً عن جداول التجزئة ، ولماذا
تكون مفيدة ولماذا في بعض الحالات تكون أفضل من المصفوفات.