أمان · مدة القراءة: 3 د ·
MD5 أم SHA-1 أم SHA-256: أي تجزئة تستخدم؟
المجاميع الاختبارية وسلامة الملفات وكلمات المرور والتواقيع يحتاج كل منها شيئًا مختلفًا. دليل قصير لاختيار التجزئة الصحيحة، والخطأ الوحيد الذي يجب تجنّبه.

دالة التجزئة تحوّل أي مدخل إلى بصمة قصيرة ثابتة الطول. المدخل نفسه يعطي دائمًا التجزئة نفسها، وتغيير بايت واحد يغيّر النتيجة كليًا. ما يميّز الخوارزميات هو مدى صعوبة خداعها.
"hello" MD5 5d41402abc4b2a76b9719d911017c592
"hello" SHA-256 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
MD5 وSHA-1: مكسورتان أمنيًا
يمكن إنتاج مدخلين مختلفين لهما تجزئة MD5 نفسها خلال ثوانٍ، وتصادمات SHA-1 العملية منشورة منذ 2017. لا تستخدمهما في التواقيع أو الشهادات أو أي شيء يمكن لمهاجم التلاعب به. لكنهما ما زالتا مناسبتين كمجاميع اختبارية سريعة، مثل اكتشاف الملفات المكررة أو بناء مفاتيح التخزين المؤقت.
SHA-256: الخيار الآمن الافتراضي
للتحقق من السلامة والتحقق من التنزيلات والتواقيع الرقمية والعنونة حسب المحتوى، فإن SHA-256 من عائلة SHA-2 هو الخيار القياسي. أما SHA-3 وBLAKE2 فبدائل حديثة بمستوى أمان مشابه.
CRC32: للحوادث لا للهجمات
CRC32 وAdler-32 مجاميع اختبارية سريعة تكتشف التلف العرضي أثناء النقل وفي الأرشيفات. يستطيع أي شخص إنتاج قيمة مطابقة عمدًا، لذلك لا تحمي من التلاعب.
لا تخزّن كلمات المرور بتجزئة سريعة أبدًا
هذا هو الخطأ الأكثر شيوعًا. السرعة بالضبط ما لا تريده في كلمات المرور: بطاقة رسوميات واحدة تجرّب مليارات تجزئات SHA-256 في الثانية. استخدم خوارزمية بطيئة مملّحة مصممة لكلمات المرور، مثل Argon2 أو bcrypt أو scrypt، عبر مكتبة كلمات المرور في إطار العمل الذي تستخدمه.
التجزئة والتشفير والترميز أشياء مختلفة
الترميز Base64, hex, URL قابل للعكس لأي أحد، بلا مفتاح
التشفير AES, RSA قابل للعكس بالمفتاح فقط
التجزئة SHA-256, MD5 باتجاه واحد، لا يمكن عكسها
لا يمكن "فك تشفير" التجزئة. المواقع التي تدّعي عكس MD5 تبحث ببساطة عن التجزئة في جداول ضخمة من مدخلات معروفة، وهذا ينجح مع الكلمات الشائعة وكلمات المرور القصيرة ويفشل مع أي شيء طويل وعشوائي.
التحقق من ملف منزّل
تنشر مشاريع كثيرة مجموع تحقق SHA-256 بجانب ملفات التنزيل. احسب تجزئة الملف الذي استلمته وقارن القيمتين؛ إذا اختلف محرف واحد فالملف تالف أو ليس الملف الذي أصدره الناشر. في كل نظام تشغيل أمر مدمج:
Linux sha256sum file.iso
macOS shasum -a 256 file.iso
Windows certutil -hashfile file.iso SHA256
PowerShell Get-FileHash file.iso -Algorithm SHA256
أطوال التجزئات
تنتج MD5 128 بت (32 محرفًا ست عشريًا)، و SHA-1 160 بت (40)، و SHA-256 256 بت (64)، و SHA-512 512 بت (128). إذا احتجت إلى إثبات من أنشأ رسالة، لا مجرد أنها لم تتغير، فاستخدم HMAC أو توقيعًا رقميًا: يستطيع أي شخص غيّر المحتوى أن يعيد حساب التجزئة العادية.
أيها تختار، في سطر واحد
- التحقق من ملف منزّل أو نسخة احتياطية: SHA-256.
- التوقيعات والشهادات وكل ما يتعلق بالأمان: SHA-256 أو أقوى، ولا MD5 أو SHA-1 أبدًا.
- إيجاد الملفات المكررة أو بناء مفاتيح التخزين المؤقت: MD5 أو SHA-1 مناسبان وسريعان.
- اكتشاف أخطاء النقل في بروتوكول أو أرشيف: CRC32.
- تخزين كلمات المرور: لا شيء مما سبق؛ استخدم Argon2 أو bcrypt أو scrypt.
لماذا لا تتطابق التجزئات
إذا أعطت أداتان تجزئتين مختلفتين للنص «نفسه»، فالمدخل يكاد لا يكون متطابقًا أبدًا: سطر جديد في النهاية أو نهايات أسطر Windows أو ترميز نصي مختلف يغيّر النتيجة كلها. يجزّئ مولّد التجزئة من 4Dev النص كبايتات UTF-8، مثل md5sum وsha256sum وhashlib في Python، ويدعم 17 خوارزمية منها MD5 وSHA-1 وSHA-2 وSHA-3 وBLAKE2 وCRC32.