ما الذي تفعله هذه الأداة
تحسب تجزئة MD5 لأي نص أو ملف داخل متصفحك، وتُعيد ناتجاً ست عشرياً بطول 32 رمزاً. MD5 دالة تجزئة بطول 128 بت من RFC 1321، صمّمها Ron Rivest عام 1991. هي سريعة — ملفات بحجم عدّة غيغابايت تُجزَّأ في ثوانٍ — لكنها ليست مقاوِمة للتصادم: يمكن هندسة مدخلين مختلفين لينتجا نفس تجزئة MD5، وقد تم إثبات ذلك عملياً منذ عام 2005.
متى يكون استخدام MD5 مقبولاً
- ETags وذواكر التخزين المعنونة بالمحتوى. ذاكرة تخزين ويب تستخدم MD5 لفهرسة كائناتها تستخدم التجزئة كمفتاح bucket سريع، لا كضمان أمني. نموذج التهديد هو «عميلان ينتجان نفس المحتوى عرضاً»، وهو ما يكفيه MD5 جيداً.
- إزالة تكرار الملفات في مجموعة موثوقة. إن كنت تتحكّم في المدخلات (نسخك الاحتياطية، وثائق فريقك)، فإن تصادمات MD5 بدون مهاجم بعيدة الاحتمال فلكياً.
- المقارنة مع مجاميع تحقق قديمة. تحميلات البرمجيات القديمة، قوائم مرايا FTP، والتوثيق قبل عام 2010 كثيراً ما تنشر MD5 فقط. التحقّق من تلك القيمة هو بالضبط ما صُمّم MD5 له.
- بصمة سريعة لملف قبل النقل. مهندسان يقارنان ما إذا كانا يملكان «نفس الملف» يستفيدان من سرعة MD5؛ نموذج التهديد هو الخطأ البشري لا التصادم العدائي.
متى لا يصلح MD5
- تخزين كلمات السر. استخدم تجزئة بطيئة ومُملَّحة مثل bcrypt أو scrypt أو Argon2. MD5 سريع جداً — تحسب وحدة GPU حديثة المليارات من تجزئات MD5 في الثانية، وأي قاعدة بيانات مسرّبة تُفك بجداول قوس قزح خلال دقائق.
- التواقيع الرقمية أو الشهادات. التصادمات حقيقية. أنشأ باحثون شهادات CA مزوّرة باستغلال تصادمات MD5 عام 2008. أي شيء يسمح للمهاجم باختيار المدخل فهو مكسور.
- التحقّق من السلامة في وجه مهاجم نشط. إن كان المهاجم يستطيع صياغة الملف الذي تجزّئه، فلا يحميك MD5. SHA-256 يحميك.
- ما تشترط فيه أنظمة الامتثال الحديثة SHA-2 أو SHA-3. PCI DSS و FIPS 140-3 ومعظم المعايير الحكومية تمنع MD5 للتطبيقات الجديدة منذ أواخر العقد الأول من الألفية الثالثة.
متجهات الاختبار
تحقّق من التطبيق بمقابل متجهات اختبار RFC 1321 الكانونية:
- السلسلة الفارغة
""→d41d8cd98f00b204e9800998ecf8427e "a"→0cc175b9c0f1b6a831c399e269772661"abc"→900150983cd24fb0d6963f7d28e17f72"message digest"→f96b697d7cb7938d525a2f31aaf161d0"The quick brown fox jumps over the lazy dog"→9e107d9d372bb6826bd81d3542a419d6
الصق أيّاً من هذه في الإدخال أعلاه؛ ينبغي أن يطابق الناتج تماماً.
ملاحظات
لماذا التجزئة 32 رمزاً وليس 16؟ يُنتج MD5 128 بت = 16 بايت. كل بايت يُعرَض رمزَين ست عشريَّين، فيكون الإجمالي 32 رمزاً مرئياً. الناتج الأساسي 16 بايتاً في الحالين.
هل يكشف MD5 شيئاً عن المدخل؟ تشفيرياً لا — لا يمكنك استرجاع المدخل من التجزئة. لكن للمدخلات القصيرة أو ذات البنية المعروفة (كلمات مفردة، كلمات سر شائعة) يمكن البحث عن التجزئة في جدول قوس قزح عمومي خلال أجزاء من الألف من الثانية. لذلك لا يصلح MD5 لتخزين كلمات السر حتى مع «ملح ضعيف».
لماذا تختلف تجزئة MD5 لديّ عمّا يُظهره md5sum؟ الأرجح بسبب سطر جديد في النهاية. echo "hello" يضيف \n، بينما لصق «hello» هنا لا يضيفه. استخدم echo -n، أو جزّئ الملف مباشرةً عبر منتقي الملفات.
أدوات ذات صلة
- مولّد التجزئة — احسب MD5 و SHA-1 و SHA-256 و SHA-384 و SHA-512 جنباً إلى جنب
- SHA-256 — الخيار الافتراضي الحديث للتجزئة الأمنية
- Base64 — اقترنه بـ MD5 لمفاتيح تخزين معنونة بالمحتوى