الأدوات
الأدلة

حاسبة الهاش

التشفير

حساب SHA-1/256/384/512 عبر Web Crypto وMD5. المخرجات Hex أو Base64.

100% من جهة العميل بدون خادم خلفي
الإدخال
الإخراج
أدخل نصًا لحساب بصمته.
في هذه الصفحة

ما هو الهاش؟#

الهاش التشفيري هو بصمة أحادية الاتجاه لبايتات عشوائية. تُدخل رسالة بأي طول فتحصل على ملخّص بطول ثابت يتصرف كتوقيع لذلك المدخل نفسه: غيِّر بتًّا واحدًا ويتغيّر المخرج بالكامل. يجيب الهاش سؤالين عمليّين دفعةً واحدة — «هل تغيّرت هذه البيانات؟» و«هل يمكنني الإشارة إلى هذه البيانات بمعرّف قصير ومستقر؟» — ولهذا يقع في أساس فحوص سلامة الملفات، وعنونة المحتوى، وإزالة التكرار، وتخزين كلمات المرور.

تحسب هذه الصفحة خمس خوارزميات: عائلة SHA-2 (SHA-256 وSHA-384 وSHA-512)، وSHA-1، وMD5. وتجري المتغيرات الأربعة لـ SHA عبر محرّك Web Crypto الأصلي للمتصفح (crypto.subtle.digest)، وهو ذاته البدائي الذي يستخدمه كود الإنتاج — لا إعادة تنفيذ بـ JavaScript. أمّا MD5 فليس جزءًا من Web Crypto، لذا يُحمَّل عند الطلب فقط حين تختاره فعلًا، فلا يثقل التحميل الأولي للصفحة.

الهاش ليس تشفيرًا. إنه أحادي الاتجاه: لا يمكنك إعادة بناء المدخل من الملخّص. إن أردت لطرفين أن يتبادلا ملخّصًا بمفتاح، فاستخدم HMAC؛ وإن أردت عكس العملية، فاستخدم التشفير المتماثل.

كيفية الاستخدام#

  1. الصق الإدخال في اللوحة اليسرى. أيّ شيء نصّي — سلسلة، أو كتلة JSON، أو مقطع إعداد. تُرمَّز البايتات بصيغة UTF-8 قبل التجزئة.
  2. اختر الخوارزمية:
    • SHA-256 — الخيار الحديث الافتراضي؛ ملخّص 256-بت، يُستخدم في كل مكان من TLS إلى Git إلى سلاسل الكتل.
    • SHA-384 / SHA-512 — ملخّصات أطول من العائلة نفسها؛ اخترها حين يطلبها أحد المواصفات.
    • SHA-1 — 160-بت؛ قديم، جيد لأغراض المجموع الاختباري، مكسور لغاية التوقيعات المقاومة للتصادم.
    • MD5 — 128-بت؛ سريع ومنتشر لكنه مكسور تشفيريًا. مفيد للمجاميع الاختبارية غير الأمنية ومفاتيح التخزين المؤقت القديمة.
  3. اختر ترميز الإخراج: hex (بأحرف صغيرة، وهو الإتفاق الشائع للملخّصات) أو base64 (أكثر إحكامًا، شائع في الرموز).
  4. انقر مثال لتحميل سلسلة الاختبار المرجعية، أو مسح للبدء من جديد. يُحدَّث الملخّص حيًّا في اللوحة اليمنى؛ واستخدم نسخ لأخذه.

الميزات الرئيسية#

  • Web Crypto أصلي. يُحسب SHA-1/256/384/512 عبر crypto.subtle.digest — تنفيذ المتصفح المُدقَّق، لا مكتبة طرف ثالث.
  • MD5 الكسول. لا يُجلب تنفيذ MD5 إلا حين تختاره، فلا يثقل أوّل إطلاق البتّة.
  • hex أو base64. تبديل بنقرة واحدة دون إعادة الكتابة.
  • سطر حالة حيّ. يُؤكّد الخوارزمية وطول الملخّص بالبايت، فالنتيجة المبتورة أو الناقصة بايتًا تصبح بيّنة.
  • رفع صفري. تتم التجزئة بالكامل داخل متصفحك؛ المدخل لا يصل إلى أيّ خادم أبدًا.

مثال عملي#

السلسلة المرجعية المعيارية هي The quick brown fox jumps over the lazy dog. مع ضبط الخوارزمية على SHA-256 والمخرج hex، يكون الملخّص:

d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592

السلسلة نفسها تحت SHA-1 (hex):

2fd4e1c67a2d28fced849ee1bb76e7391b93eb12

حالة حدّيّة مفيدة هي السلسلة الفارغة. فتجزئة «اللاشيء» تنتج أيضًا ملخّصًا معرَّفًا جيدًا غير فارغ — بالنسبة إلى SHA-256 هو e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855، ولـ MD5 هو d41d8cd98f00b204e9800998ecf8427e. هذه المتجهات ذات المدخل الفارغ هي أيضًا كيف يتحقّق طقم اختبارات هذه الأداة من الصحّة — إن اختلف مخرجك، فقد عُدِّلت الصفحة.

الأسئلة الشائعة#

SHA-256 أم MD5 — أيّهما أختار؟#

SHA-256 لأيّ ما يمسّ الأمن: مخططات تمليح كلمات المرور، والعناوين الموقَّعة، وإثباتات السلامة، ومعرّفات المحتوى التي يجب أن تقاوم هجمات التصادم. ويُقبل MD5 فقط للمجاميع الاختبارية غير العدائية (فحص سريع لـ «هل تغيّر هذا الملف؟»، أو مفتاح تخزين مؤقت) حيث لا أحد يحاول تزييف تصادم. إن لم تكن متأكدًا، التزم SHA-256 افتراضيًا.

لماذا ينتج المدخل نفسه دائمًا الملخّص نفسه؟#

التجزئة حتمية — لا مِلح عشوائي متورّط في هذه الطبقة (بخلاف bcrypt). تلك الحتمية هي جوهر عنونة المحتوى: يجب أن تنتج البايتات نفسها دائمًا البصمة نفسها. والوجه الآخر أنّ شخصين يُجزّئان السرّ نفسه يحصلان على الملخّص نفسه، ولهذا فالهاش المجرّد طريقة فظيعة لتخزين كلمات المرور.

هل أستطيع استعادة الأصل من الهاش؟#

لا. الهاش التشفيري دالة أحادية الاتجاه ب التصميم؛ لا مفتاح ولا عملية عكسية. «فكّ تشفير SHA-256» خطأ تصنيفي. الهجوم الوحيد هو القوّة الغاشمة (تجربة مدخلات حتى يطابق أحدها)، وهو بالضبط ما يجعل كلمات المرور الضعيفة خطيرة حتى حين تُجزَّأ بلا مِلح.

لماذا يختلف MD5 لديّ عن أداة أستخدمها عادةً؟#

يكاد يكون دائمًا عدم تطابق في تمثيل البايتات: سطر جديد لاحق، أو نهايات أسطر مختلفة (CRLF مقابل LF)، أو أنّ الأداة الأخرى تُجزّئ تمثيلًا بـ UTF-16 بينما تُجزّئ هذه الصفحة UTF-8. قارن البايتات الخام، لا النصّ الظاهر على الشاشة.