طريقة الاستخدام
- اكتب النص أو الصقه، أو غيّر «صيغة المدخلات» إلى «ست عشري» لإدخال بايتات، أو انقر «فتح ملف» لحساب تجزئة بايتات الملف كما هي تمامًا.
- أبقِ «ترميز النص» على UTF-8 ما لم تكن قيمة التجزئة الأصلية محسوبة من نص بمجموعة أحرف أخرى.
- من «صيغة المخرجات»، اختر «ست عشري (أحرف صغيرة)» أو «ست عشري (أحرف كبيرة)» أو «Base64».
- للتحقق من ملف نزّلته، الصق قيمة MD5 المنشورة في حقل «المقارنة مع» وتأكّد من ظهور «متطابقة».
ما هي خوارزمية MD5؟
صمّم رونالد ريفست (Ronald Rivest) خوارزمية MD5 (اختصار Message-Digest Algorithm 5)، ونُشرت عام 1992 في RFC 1321. تقرأ الخوارزمية مدخلاتها في كتل من 512 بت وتُنتج ملخصًا بطول 128 بت، يُكتب عادةً في صورة 32 حرفًا ست عشريًا أو 24 حرفًا بترميز Base64. وتعطي المدخلات نفسها دائمًا الملخص نفسه، أما تغيير بت واحد فقط في المدخلات فيغيّر نحو نصف بتات المخرجات.
التجزئة عملية أحادية الاتجاه: فلا يوجد مفتاح، ولا سبيل إلى «فك تشفير» قيمة MD5 لاستعادة المدخلات. أما المواقع التي تزعم أنها تعكس MD5 فتبحث عن القيمة في جداول ضخمة من تجزئات الكلمات الشائعة وكلمات المرور المسرّبة، ولهذا كثيرًا ما يُعثر على تجزئة MD5 غير المملّحة لكلمة مرور قصيرة في ثوانٍ.
هل لا تزال MD5 آمنة؟
ليست آمنة في مواجهة مهاجم. فقد نشرت شياويون وانغ (Xiaoyun Wang) وزملاؤها عام 2004 تصادمات عملية، أي مدخلين مختلفين لهما قيمة MD5 نفسها. ثم تلتها تصادمات البادئة المختارة (chosen-prefix): إذ استخدم باحثون أحدها عام 2008 لإنشاء شهادة CA مزيّفة، وفي عام 2012 استخدم البرنامج الخبيث Flame أحدها لتزوير شهادة جعلت شيفرته تبدو موقّعة من Microsoft. واليوم يجد حاسوب محمول عادي تصادمًا في MD5 خلال ثوانٍ، وينص RFC 6151 على أن MD5 لم تعد مقبولة حيث تُشترط مقاومة التصادم، كما في التواقيع الرقمية.
لكن MD5 لا تزال مناسبة مجموعًا اختباريًا لكشف التلف العرضي، مثل تنزيل غير مكتمل أو بت انقلبت قيمته على القرص، وكذلك لمفاتيح التخزين المؤقت أو لإزالة التكرار من بيانات موثوقة. وعندما يمكن أن يأتي الملف أو مجموعه الاختباري من مهاجم، استخدم SHA-256 بدلًا منها.
الست عشري وBase64 واختلاف قيم التجزئة
تُطبع قيمة MD5 عادةً بالنظام الست عشري، وهي الصيغة التي يُخرجها الأمر md5sum. لكن بعض البروتوكولات ترسل البايتات الـ 16 الخام بترميز Base64 بدلًا من ذلك، مثل ترويسة HTTP Content-MD5 التي تستخدمها واجهات API للتخزين السحابي مثل Amazon S3. اختر «Base64» في «صيغة المخرجات»، أو حوّل قيمة موجودة باستخدام تحويل الست عشري إلى Base64.
إذا اختلفت قيمة MD5 لديك عن نتيجة أداة أخرى، فبايتات المدخلات مختلفة. ومن الأسباب المعتادة: سطر جديد زائد في النهاية، أو نهايات أسطر Windows، أو ترميز نص مختلف؛ فكلمة «café» تشغل 5 بايتات في UTF-8 لكنها 4 بايتات فقط في ISO-8859-1، لذا لا تشترك القيمتان في شيء.
$ echo "hello" | md5sum # يحسب تجزئة "hello\n"
b1946ac92492d2347c6235b4d2611184 -
$ printf 'hello' | md5sum # يحسب تجزئة "hello"
5d41402abc4b2a76b9719d911017c592 -
MD5 في سطر الأوامر وفي الشيفرة البرمجية
md5sum file.iso # Linux
md5 file.iso # macOS
certutil -hashfile file.iso MD5 # Windows
Get-FileHash file.iso -Algorithm MD5 # PowerShell
# Python
import hashlib
hashlib.md5('hello'.encode('utf-8')).hexdigest()
// Node.js
require('crypto').createHash('md5').update('hello', 'utf8').digest('hex')
لا تتضمن واجهة Web Crypto API المدمجة في المتصفحات خوارزمية MD5، لذا تحسبها هذه الصفحة بلغة JavaScript على جهازك، ولا يُرفع أي شيء. ويعرض جدول «جميع الخوارزميات» أسفل النتيجة قيم SHA-1 وSHA-256 وSHA-384 وSHA-512 وCRC-32 وCRC-32C للمدخلات نفسها.
أمثلة
| المدخلات (UTF-8) | MD5 |
|---|---|
Hello, World! | 65a8e27d8879283831b664bd8b7f0ad4 |
Base64.is | 2e3c0e8b828164a8db7f62146ca87e14 |
你好 | 7eca689f0d3389d9dea66ae112e5cfd7 |
الأسئلة الشائعة
هل يمكن فك تشفير قيمة MD5؟
هل تكفي MD5 للتحقق من ملف تم تنزيله؟
تكشف MD5 التلف العرضي بموثوقية. لكن لأن إنتاج التصادمات رخيص، يستطيع من يُعدّ ملفًا مسبقًا أن يصنع ملفًا ثانيًا مختلفًا له قيمة MD5 نفسها. لذا في التنزيلات المهمة أمنيًا، تحقّق من تجزئة SHA-256 مأخوذة من مصدر موثوق، أو من توقيع رقمي.
ما طول قيمة MD5؟
==. وقد تكون السلسلة الست عشرية المؤلفة من 32 حرفًا أيضًا تجزئة MD4 أو NTLM؛ وتعرض أداة تحديد نوع التجزئة الاحتمالات الممكنة.هل يمكنني حساب MD5 لملف كبير؟
md5sum أو certutil.