مولّد التجزئة
تجزئة MD5 وSHA-1 وSHA-256 وSHA-512 للنصوص أو الملفات، وbcrypt، ومدقّق للمجموع الاختباري — داخل متصفحك.
مولّد التجزئة — حساب MD5 وSHA-1 وSHA-256 وSHA-512 أونلاين
الصق أي نص أو أفلت ملفًا وسيولّد هذا المولّد المجاني بصمات MD5 وSHA-1 وSHA-256 وSHA-384 وSHA-512 في وقت واحد، فتقارنها جنبًا إلى جنب بدل تشغيل عدة أدوات منفصلة. ولسان bcrypt مستقل يولّد تجزئات كلمات المرور ويتحقق منها. كل الحساب يجري داخل متصفحك، لذا يبقى حتى الملف الكبير على جهازك.
التجزئة بصمة ثابتة الطول لبياناتك. غيّر محرفًا واحدًا — ولو مسافة في نهاية السطر — وسيتغيّر الناتج تمامًا. هذه الخاصية هي ما يجعل التجزئة مفيدة للتحقق من التنزيلات، وكشف التكرار، وبناء مفاتيح التخزين المؤقت، ومقارنة نسختين من مستند دون قراءة أي منهما.
ما هي دالة التجزئة
دالة التجزئة التشفيرية تستقبل مدخلًا بأي طول وتعيد عددًا ثابتًا من البتات: 128 في MD5، و160 في SHA-1، و256 في SHA-256، و512 في SHA-512، وتُعرض عادةً بالنظام الست عشري. المدخل نفسه ينتج البصمة نفسها دائمًا، والمدخلات المختلفة لا تتصادم عمليًا في خوارزمية قوية، ولا سبيل لعكس العملية. النقطة الأخيرة هي الأكثر إساءة للفهم.
أي خوارزمية تجزئة تختار
| الخوارزمية | طول الناتج | وضعها اليوم |
|---|---|---|
| MD5 | 32 محرفًا ست عشريًا | مكسورة أمنيًا. تصلح للاستخدامات غير الأمنية مثل مفاتيح الكاش وETag وإزالة التكرار. |
| SHA-1 | 40 محرفًا ست عشريًا | مهجورة. أُثبتت التصادمات؛ ما زالت تظهر في كائنات Git القديمة والشهادات القديمة. |
| SHA-256 | 64 محرفًا ست عشريًا | المعيار الحالي: المجاميع الاختبارية والتواقيع والبلوكتشين وتوقيع طلبات الـ API. |
| SHA-512 | 128 محرفًا ست عشريًا | من عائلة SHA-256 بناتج أطول، وغالبًا أسرع على العتاد ذي 64 بت. |
طريقة توليد التجزئة أونلاين
- اختر لسان نص للنص المكتوب، أو لسان ملف للملف، أو لسان bcrypt لتجزئة كلمة مرور.
- الصق نصك أو اسحب ملفًا إلى منطقة الرفع؛ يبدأ حساب الملف فور اختياره.
- اضغط توليد التجزئات لحساب كل البصمات دفعة واحدة.
- انسخ البصمة التي تريدها بالزر المجاور لها.
- للتحقق من تنزيل، الصق القيمة المنشورة في حقل التحقق مقابل مجموع اختباري منشور فتخبرك الأداة بالخوارزمية المطابقة.
طريقة التحقق من مجموع MD5 أو SHA-256 لملف
هذا ما يأتي من أجله معظم الناس. افتح لسان ملف وأفلت المثبّت أو الأرشيف أو ملف ISO الذي نزّلته، فتُحسب البصمات الخمس على بايتات الملف كما هي مخزّنة على القرص. ثم الصق المجموع المنشور في صفحة التنزيل داخل حقل التحقق: سطر أخضر يذكر اسم الخوارزمية يعني أن الملف وصل سليمًا، وغياب التطابق يعني تلفًا أو عبثًا. يُدعم حجم يصل إلى 50 ميجابايت، والقراءة محلية: لا يُرفع الملف أبدًا.
فيمَ تُستخدم التجزئة عمليًا
- التأكد من أن صورة ISO أو مثبّتًا أو أرشيف إصدار نُزّل دون تلف أو تلاعب.
- كشف السجلات أو الصور أو الملفات المكررة دون مقارنة المحتوى كاملًا.
- بناء مفاتيح التخزين المؤقت وETag من طلب أو صفحة مُصيَّرة.
- توقيع طلبات الـ API حيث يحسب العميل والخادم بصمة الحمولة نفسها ثم يقارنان.
- تخزين قيمة سلامة في قاعدة البيانات ليصبح أي تعديل لاحق مرئيًا.
- بنية Git الداخلية والنسخ الاحتياطي بلا تكرار والتخزين المعنون بالمحتوى.
لا يمكن فكّ تشفير التجزئة
البحث عن «فك تشفير MD5» شائع جدًا، لكن مقدمته خاطئة: التجزئة ليست تشفيرًا ولا يوجد مفتاح يعكسها. ما تفعله مواقع الفكّ المزعومة هو البحث عن البصمة في جدول ضخم محسوب مسبقًا للمدخلات الشائعة. ينجح ذلك مع 123456 أو password ويفشل مع أي شيء غير مألوف. وإن أردت تحويلًا قابلًا للعكس فاتجه إلى التشفير أو إلى مُرمِّز Base64.
لا تخزّن كلمات المرور بـ MD5 أو SHA-256
دوال التجزئة العامة مصمَّمة لتكون سريعة، والسرعة هي بالضبط ما يريده مهاجم يملك قاعدة بيانات مسرَّبة: العتاد الحديث يجرّب مليارات المحاولات في الثانية. كلمات المرور تحتاج خوارزمية بطيئة عمدًا ومزوّدة بملح خاص لكل مستخدم: bcrypt أو scrypt أو Argon2. استخدم لسانَي نص وملف للمجاميع الاختبارية والبصمات، واترك تخزين كلمات المرور لإطار العمل لديك.
توليد تجزئة bcrypt والتحقق منها
لسان bcrypt مخصص للمواقف التي تحتاج فيها إلى تجزئة كلمة مرور يدويًا: تهيئة حساب مدير، أو كتابة بيانات اختبار، أو تتبّع سبب فشل تسجيل الدخول. اكتب كلمة المرور، واختر عامل التكلفة من 4 إلى 14 والبادئة، ثم اضغط توليد التجزئات. كل زيادة بدرجة واحدة في التكلفة تضاعف العمل؛ والقيمة 10 هي الافتراضية في PHP، و12 خيار شائع للأنظمة الجديدة. البادئة $2y$ هي ما تكتبه دالة password_hash() في PHP، و$2b$ هي المعيار الحديث في غيرها، و$2a$ هي التسمية الأقدم؛ والثلاث تشغّل الخوارزمية نفسها، فأي منها يجتاز التحقق في مكتبة متوافقة. ويُسحب salt عشوائي جديد في كل مرة، ولهذا لا تعطي كلمة المرور نفسها التجزئة نفسها مرتين أبدًا.
لاختبار كلمة مرور مقابل قيمة مخزّنة، الصق التجزئة في حقل التحقق من كلمة مرور مقابل تجزئة bcrypt واضغط تحقق. لا يقرأ bcrypt إلا أول 72 بايت من كلمة المرور، وتنبّهك الأداة حين يكون المدخل أطول من ذلك. وتفتح صفحة مولّد bcrypt هذا اللسان مباشرة.
نصائح تجنّبك نتائج محيّرة
- سطر جديد أو مسافة في النهاية يغيّران البصمة تمامًا. نظّف المدخل قبل المقارنة.
- في التمثيل الست عشري لا فرق بين الحروف الكبيرة والصغيرة:
A3Fوa3fالقيمة نفسها. - يُجزَّأ النص بوصفه بايتات UTF-8، لذا تعطي المحارف نفسها بترميز آخر بصمة مختلفة.
- المجاميع التي ينشرها مشروع ما تخصّ بايتات الملف لا حقلًا نصيًا: استخدم لسان ملف ليُجزَّأ الملف بالبايتات نفسها.
- إن أعطى مدخلان مختلفان البصمة نفسها فقد وجدت تصادمًا، وهو تحديدًا سبب تقاعد MD5 وSHA-1.
لا شيء يُرفع
تُحسب البصمات الخمس على جهة العميل بلغة JavaScript. لا يصل نصك ولا الملف الذي تختاره إلى أي خادم، فيمكنك أخذ بصمة مستندات داخلية أو قيم إعدادات أو بيانات عملاء أثناء العمل بلا قلق.
الحصول على هاش MD5 أو SHA-256 لملف في Windows وLinux وmacOS
| النظام | SHA-256 | MD5 |
|---|---|---|
| Windows (موجه الأوامر) | certutil -hashfile file.iso SHA256 | certutil -hashfile file.iso MD5 |
| Windows (PowerShell) | Get-FileHash file.iso -Algorithm SHA256 | Get-FileHash file.iso -Algorithm MD5 |
| Linux | sha256sum file.iso | md5sum file.iso |
| macOS | shasum -a 256 file.iso | md5 file.iso |
| Python | hashlib.sha256(data).hexdigest() | hashlib.md5(data).hexdigest() |
| Node.js | crypto.createHash('sha256').update(data).digest('hex') | الأمر نفسه مع 'md5' |
| PHP | hash('sha256', $s) أو hash_file('sha256', $path) | md5($s)، md5_file($path) |
النتيجة واحدة في كل مكان: الهاش يعتمد على البايتات فقط، لا على الأداة التي حسبته. وهذا ما يتيح لك التحقق هنا من ملف نزّلته مقابل قيمة أنتجها الناشر على جهاز مختلف تمامًا.
أدوات ذات صلة
البصمات نادرًا ما تُستخدم وحدها. رمّز البيانات الثنائية عبر مُرمِّز Base64، وافحص رمزًا موقّعًا عبر فاكّ ترميز JWT، وأنشئ معرّفات فريدة عبر مولّد UUID، وولّد أسرارًا قوية عبر مولّد كلمات المرور.