إم دي5  خوارزمية أم دي 5 أو خوارزمية هضم الرسالة الخامسة هي دالة الاختزال المسمّاة دالة هاش تشفيرية (Message Digest) والتي تُعتبر من أكثر دوال الاختزال انتشارًا في علم التشفير وأمن المعلومات نظرًا لسهولة تنفيذها وصعوبة اختراقها. يشمل ذلك نظرة سريعة على أهميّتها، طريقة تطويرها من النظريّة التي تتّبعها ومُخرجاتها، والنسخ السابقة لها إم دي2, إم دي4 المطوّرة في مختبرات إم آي تي MIT عن طريق الدكتور رونالد ريفست. يُفرّق أيضًا بين MD5 وبقيّة دوال الاختزال عن طريق أبرز خصائصها التقنيّة ومميّزاتها، ثُم يوضّح بشيءٍ من التفصيل خطوات تنفيذها بدءًا من طريقة الاختزال، مرورًا بالجولات الأربع انتهاءً باختزال الرسالة الأصليّة إلى شكلها النهائيّ. وأخيرًا يُلقي هذا المقال نظرة سريعة على عيوب ونقاط ضعف هذه الدالّة نسبةً إلى ثباتها أمام محاولات الاختراق، وسلسلة محاولات الكسر الناجحة التي حصلت عليها مُنذ بداية تطويرها.  تُعد دالة هاش تشفيرية (Message Digest) من أكثر دوال الاختزال انتشارًا، وقد صُمّمت في نسختها الأوليّة (MD2) عام 1989م عن طريق الدكتور رونالد ريفست أستاذ الحاسب في معهد ماساتشوستس للتقنية (MIT)، وتم تطويرها إلى نسخة (MD5) عن طريق مطوّرها نفسه عام 1991م بعد أن تمّت دراسة خواصّ الأمن فيها وتغطية ثغرات سابقتها لفترة طويلة. تستخدم MD5 دالّة ميركل ديمقارد (Merkle–Damgård construction)، وتقوم على اختزال رسالة ذات طول متغيّر إلى طول ثابت هو 128 بت بغضّ النظر عن طولها الأصليّ، حيث يتم تحويل الرسالة إلى حزم (blocks) طول كُلّ منها 512 بت بغرضِ اختزالها في خطواتٍ لاحقة. من الجدير بالذكر أنّ أي تغيير مهما كان حجمه في النصّ الأصليّ يُنتج قيمة اختزال مختلفة تمامًا عن القيمة السابقة، أو هو ما تحاول الدالّة تحقيقه خلاص  تتميّز MD5 عن غيرها من دوال الاختزال في عدّة نقاط:  1.سهلة التنفيذ وقليلة التكلفة.  2.تُوفّر مخرجًا مختلفًا لكلّ مدخل مهما صغر الفرق بينهم وهو ما يُسمّى بالبصمة (Fingerprint). jkjhk 3.استحالة الرّجوع من قيمة الاختزال إلى الرسالة الأصليّة.  خطوات اختزال النصوص عن طريق MD5 هي:  1. إضافة الحشو (Padding): في هذه الخُطوة نقوم بإسناد أجزاء (bits) إضافيّة للنّص الأصليّ، ويتم ذلك في مرحلتين: أ. نبدأ بإضافة 1 ثُم نملأ البقيّة بالأصفار حتّى يصبح طول الرسالة منسجمًا مع 448 % 512 (أي أننا نُضيف حتّى يُصبح الطّول أقل ب 64 بت من أن يقبل القسمة على 512).  ب. إضافة طول الرسالة: 64 بت تُضاف لنهاية الرسالة تُحدّد طولها الأصليّ بالبايات (Bytes) بعد تحويل الرقم إلى صيغته الثنائيّة (Binary). في حال كانت الرسالة طويلة جدًا وكان التمثيل الثنائي لعددها أكثر من 64 بت، فإنّ الأجزاء ذات الترتيب المنخفض (low-order bits) هي التي تُستخدم فقط. بعد هذه الخطوة يُصبح طول الرسال 512 س، حيث س هو أي عدد موجب.  2. التقسيم (Partition): يتم في هذه الخطوة تقسيم الرسالة إلى حزم طول كل حزمة منها 512 بت.  3. تعريف المساحة التخزينيّة (Initialize MD Buffer): يتم فيها تعريف مساحة بطول 4 كلمات (four-word buffer) طول كل واحدة منها 32 بت، تُعرّف مسبقًا بالقيم التالية:  A: 01 23 45 67  B: 89 ab cd ef  C: fe dc ba 98  D: 76 54 32 10  4. التنفيذ (Processing): ابتداءً نُعرّف 4 دوال مساعدة تأخذ كل منها مدخلاً مكوّنًا من 3 كلمات، كل كلمة عبارة عن 32 بت، وتُخرج كلمة واحدة مكوّنة من 32 بت أيضًا.  F(X,Y,Z) = XY v not(X) Z  G(X,Y,Z) = XZ v Y not(Z)  H(X,Y,Z) = X xor Y xor Z  I(X,Y,Z) = Y xor (X v not(Z))  تمرّ كل حزمة من البيانات بِأربع جولات (4 rounds) متتالية، تتكوّن كل جولة منها من 16 خطوة. نستخدم في كل خطوة جدولاً مُكوّنًا من 64 خانة T[1 ... 64] يتم حسابها عن طريق دالّة sine وتساوي T[i]= 4294967296 times aps(Sin(i)) حيث تحسب i بالراديان.  نقوم بتطبيق المعادلة التالية في كل خطوة:  a = b + ((a + g(b,c,d) + X[k] + T[i]) «</ref>  2. في عام 2007 طوّر مارك ستيفنز في رسالته الماجستير طريقة لاختراق MD5 عُرفت باسم: اصطدام البادئة المُختارة (chosen-prefix collisions)، تستغرق ما بين 15 إلى ساعة لتصنيع الاصطدام في أجهزة الكمبيوتر العاديّة.