معرف البصمة

تحديد نوع البصمة حسب الطول والتنسيق — MD5 و SHA-1 و SHA-256 والمزيد

سلسلة البصمة

يعمل محليًا · آمن للصق الأسرار

ما هو تعرُّف الـ Hash؟

تعرُّف الـ Hash هو عملية تحديد خوارزمية التجزئة التشفيرية التي أنتجت ملخصًا معيَّنًا. تنتج دوال التجزئة التشفيرية مثل MD5 وSHA-1 وSHA-256 مخرجاتٍ ذات طول ثابت، ويُعدّ طول المخرج الإشارةَ الرئيسية لتعرُّف hash مجهول. عندما تصادف سلسلة نصية سداسية عشرية في تفريغ قاعدة بيانات أو ملف إعدادات أو استجابة API، تخبرك أداة تعرُّف الـ hash بالخوارزمية التي أنتجتها على الأرجح.

تربط كل خوارزمية تجزئة بيانات المدخل بمخرج ذي حجم ثابت يُسمى الملخص (digest). ينتج MD5 دائمًا 128 بت (32 حرفًا سداسيًا عشريًا)، وينتج SHA-1 دائمًا 160 بت (40 حرفًا)، وينتج SHA-256 دائمًا 256 بت (64 حرفًا). هذا الطول الحتمي للمخرج هو ما يُتيح التعرُّف على الخوارزمية دون الحاجة إلى المدخل الأصلي أو الشيفرة البرمجية للتجزئة.

لا يكون التعرُّف استنادًا إلى الطول وحده حاسمًا في جميع الأحيان؛ إذ تتشارك عدة خوارزميات حجم المخرج ذاته — فمثلًا، يُنتج كلٌّ من SHA-256 وSHA3-256 ملخصاتٍ سداسية عشرية من 64 حرفًا. في هذه الحالات، تُقدّم أداة التعرُّف قائمةً بالخوارزميات المرشَّحة مرتَّبةً حسب الشيوع. وتُساعد القرائن السياقية كنظام المصدر وصيغة الترميز (hex مقابل Base64) ووجود بادئات الخوارزميات (مثل '$2b$' لـ bcrypt) على تضييق نطاق الاحتمالات.

لماذا تستخدم أداة تعرُّف الـ Hash؟

تظهر الـ hashes المجهولة بانتظام أثناء عمليات التدقيق الأمني وترحيل قواعد البيانات والتحليل الجنائي الرقمي. تُزيل أداة التعرُّف التخمينَ وتُرشدك إلى الخوارزمية الصحيحة في ثوانٍ.

كشف فوري
الصِق الـ hash واحصل على الخوارزميات المرشَّحة فورًا. لا حاجة لعدّ الأحرف يدويًا أو الرجوع إلى جداول مرجعية — تربط الأداة طول hex بجميع الخوارزميات المطابقة تلقائيًا.
🔒
تحليل يُقدّم الخصوصية أولًا
يعمل التعرُّف بالكامل في متصفحك باستخدام JavaScript. لا تغادر قيمة الـ hash جهازك قط، وهو ما يُهمّ عند تحليل hashes كلمات المرور أو رموز التوثيق أو الأدلة الجنائية الحساسة.
📋
تغطية شاملة للخوارزميات
يكشف عن MD5 وSHA-1 وSHA-224 وSHA-256 وSHA-384 وSHA-512 ونظيراتها من SHA-3. يشمل الجدول المرجعي عائلتَي SHA-2 وSHA-3 الكاملتين بالإضافة إلى بدائل شائعة مثل RIPEMD-160 وBLAKE2.
🚫
بدون حساب أو تثبيت
يعمل فورًا في أي متصفح حديث. لا تسجيل، ولا مفتاح API، ولا أداة CLI للتثبيت. احفظه في المفضلة واستخدمه كلما صادفت hash مجهولًا — على أي نظام تشغيل وأي جهاز.

حالات استخدام أداة تعرُّف الـ Hash

التدقيق الأمني
خلال اختبارات الاختراق، يُحدّد التعرُّف على خوارزميات hash كلمات المرور في قواعد البيانات المسرَّبة أسلوبَ كسر التشفير. تشير hashes MD5 وSHA-1 إلى حماية ضعيفة ويمكن إعطاؤها الأولوية في الإصلاح.
ترحيل قواعد البيانات
عند ترحيل سجلات المستخدمين بين الأنظمة، يجب معرفة خوارزمية hash كلمة المرور المخزَّنة لضبط طبقة التوثيق الجديدة بصورة صحيحة. الخطأ في تحديد الخوارزمية يتسبب في فشل جميع عمليات تسجيل الدخول.
DevOps و CI/CD
كثيرًا ما تتضمن خطوط البناء مجاميع تحقق (checksums) للتحقق من صحة الحزم. معرفة ما إذا كانت المجموع التحققي SHA-256 أو SHA-512 يضمن استخدام أمر التحقق الصحيح في سكريبتات النشر.
الجنائيات الرقمية
يصطدم فاحصو الجنائيات الرقمية بملخصات hash في سجلات سلامة الملفات وسجلات البلوك تشين وبيانات وصف الأدلة. التعرُّف على الخوارزمية شرطٌ أساسي للتحقق من سلسلة حفظ الأدلة.
تكامل الـ API
تُعيد APIs الجهات الخارجية أحيانًا قيم hash دون توثيق الخوارزمية المستخدمة. التعرُّف على نوع الـ hash من الاستجابة يُمكّنك من ضبط التحقق من توقيع الـ webhook أو التحقق من المجموع التحققي بشكل صحيح.
تعلُّم التشفير
يمكن للطلاب الذين يدرسون مقررات التشفير لصق hashes مُولَّدة بخوارزميات مختلفة ورؤية العلاقة فورًا بين اختيار الخوارزمية وطول المخرج وخصائص الأمان.

مرجع أطوال خوارزميات الـ Hash

يربط الجدول أدناه كل خوارزمية hash شائعة بحجم مخرجها بالبت وعدد الأحرف السداسية العشرية والبايتات الخام. هذا هو جدول البحث الأساسي الذي تستخدمه أدوات تعرُّف الـ hash. عندما تتشارك خوارزميات متعددة في طول hex واحد، تحتاج إلى سياق إضافي للتمييز بينها.

الخوارزميةالبتاتأحرف Hexالبايتاتملاحظات
MD51283216Broken — collisions trivial since 2004
SHA-11604020Deprecated — SHAttered attack (2017)
SHA-2242245628Truncated SHA-256; rarely used standalone
SHA-2562566432Current standard; TLS, Git, Bitcoin
SHA-3843849648Truncated SHA-512; CNSA Suite approved
SHA-51251212864Maximum SHA-2 output; large-data hashing
SHA3-2562566432Keccak-based; NIST alternative to SHA-2
SHA3-51251212864Keccak-based; highest SHA-3 strength
RIPEMD-1601604020Used in Bitcoin address derivation
BLAKE2s2566432Faster than SHA-256; 256-bit output

التمييز بين أطوال الـ Hash المتشابهة

تُطابق بعض أطوال hex خوارزميات متعددة. أكثر حالتَي التباس شيوعًا هما hashes من 64 حرفًا (SHA-256 مقابل SHA3-256) وhashes من 40 حرفًا (SHA-1 مقابل RIPEMD-160). إليك كيفية التمييز بينها حين لا يكفي الطول وحده.

64 حرفًا hex: SHA-256 مقابل SHA3-256
كلاهما يُنتج ملخصات بحجم 256 بت (64 حرفًا). SHA-256 أكثر شيوعًا بكثير في التطبيق العملي — تستخدمه مُعظم ارتكازات Git والشهادات TLS وكتل Bitcoin وتواقيع API. لا يُوجد SHA3-256 عادةً إلا في أنظمة تشترط صراحةً الامتثال لـ NIST SP 800-185 أو البُنى المستندة إلى Keccak. راجع توثيق النظام المصدر للتأكد.
40 حرفًا hex: SHA-1 مقابل RIPEMD-160
SHA-1 هو hash الـ 160 بت الأكثر انتشارًا — استُخدم تاريخيًا في Git (قبل الانتقال إلى SHA-256) وTLS وتوقيع الشيفرة. يظهر RIPEMD-160 أساسًا في توليد عناوين Bitcoin (HASH160 = SHA-256 متبوعًا بـ RIPEMD-160). إذا جاء الـ hash من سياق عملات مشفرة فأعطِ الأولوية لـ RIPEMD-160؛ وإلا فـ SHA-1 هو المرشَّح الأرجح.

أمثلة برمجية

فيما يلي تطبيقات عملية لتعرُّف الـ hash بناءً على طول hex بأربع لغات برمجية. تتحقق كل دالة من صحة الترميز السداسي العشري، وتبحث عن عدد الأحرف، وتُعيد جميع الخوارزميات المطابقة.

JavaScript
function identifyHash(hex) {
  const len = hex.length
  const isHex = /^[0-9a-fA-F]+$/.test(hex)
  if (!isHex) return ['Not a hex-encoded hash']

  const map = {
    32:  ['MD5'],
    40:  ['SHA-1', 'RIPEMD-160'],
    56:  ['SHA-224', 'SHA3-224'],
    64:  ['SHA-256', 'SHA3-256', 'BLAKE2s'],
    96:  ['SHA-384', 'SHA3-384'],
    128: ['SHA-512', 'SHA3-512', 'BLAKE2b'],
  }
  return map[len] || [`Unknown (${len} hex chars)`]
}

identifyHash('d41d8cd98f00b204e9800998ecf8427e')
// → ["MD5"]

identifyHash('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855')
// → ["SHA-256", "SHA3-256", "BLAKE2s"]
Python
import re

HASH_LENGTHS = {
    32:  ['MD5'],
    40:  ['SHA-1', 'RIPEMD-160'],
    56:  ['SHA-224', 'SHA3-224'],
    64:  ['SHA-256', 'SHA3-256', 'BLAKE2s'],
    96:  ['SHA-384', 'SHA3-384'],
    128: ['SHA-512', 'SHA3-512', 'BLAKE2b'],
}

def identify_hash(hex_string: str) -> list[str]:
    hex_string = hex_string.strip()
    if not re.fullmatch(r'[0-9a-fA-F]+', hex_string):
        return ['Not a hex-encoded hash']
    return HASH_LENGTHS.get(len(hex_string), [f'Unknown ({len(hex_string)} hex chars)'])

identify_hash('da39a3ee5e6b4b0d3255bfef95601890afd80709')
# → ['SHA-1', 'RIPEMD-160']

identify_hash('a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a')
# → ['SHA-256', 'SHA3-256', 'BLAKE2s']
Go
package main

import (
	"fmt"
	"regexp"
)

var hexPattern = regexp.MustCompile("^[0-9a-fA-F]+$")

var hashLengths = map[int][]string{
	32:  {"MD5"},
	40:  {"SHA-1", "RIPEMD-160"},
	56:  {"SHA-224", "SHA3-224"},
	64:  {"SHA-256", "SHA3-256", "BLAKE2s"},
	96:  {"SHA-384", "SHA3-384"},
	128: {"SHA-512", "SHA3-512", "BLAKE2b"},
}

func identifyHash(hex string) []string {
	if !hexPattern.MatchString(hex) {
		return []string{"Not a hex-encoded hash"}
	}
	if algos, ok := hashLengths[len(hex)]; ok {
		return algos
	}
	return []string{fmt.Sprintf("Unknown (%d hex chars)", len(hex))}
}

func main() {
	fmt.Println(identifyHash("d41d8cd98f00b204e9800998ecf8427e"))
	// → [MD5]
}
CLI (Bash)
#!/bin/bash
# Identify a hash from the command line by character count
hash="$1"

if [[ ! "$hash" =~ ^[0-9a-fA-F]+$ ]]; then
  echo "Not a hex-encoded hash"
  exit 1
fi

len=${#hash}
case $len in
  32)  echo "MD5 (128-bit)" ;;
  40)  echo "SHA-1 or RIPEMD-160 (160-bit)" ;;
  56)  echo "SHA-224 or SHA3-224 (224-bit)" ;;
  64)  echo "SHA-256 or SHA3-256 (256-bit)" ;;
  96)  echo "SHA-384 or SHA3-384 (384-bit)" ;;
  128) echo "SHA-512 or SHA3-512 (512-bit)" ;;
  *)   echo "Unknown hash length: $len chars" ;;
esac

# Usage: ./identify.sh d41d8cd98f00b204e9800998ecf8427e
# → MD5 (128-bit)

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

كيف يعمل تعرُّف الـ hash؟
يعتمد تعرُّف الـ hash أساسًا على طول الملخص المُرمَّز بصيغة hex. تُنتج كل خوارزمية hash عددًا ثابتًا من بتات المخرج: يُنتج MD5 ‏128 بت (32 حرف hex)، ويُنتج SHA-1 ‏160 بت (40 حرفًا)، ويُنتج SHA-256 ‏256 بت (64 حرفًا)، وهكذا. تقيس الأداة طول السلسلة، وتتحقق من احتوائها على أحرف سداسية عشرية فقط، ثم تربطها بأحجام مخرجات الخوارزميات المعروفة.
هل تستطيع أداة تعرُّف الـ hash تحديد الخوارزمية الدقيقة بيقين؟
ليس دائمًا. قد تُنتج خوارزميات متعددة طول مخرج واحدًا. يُنتج كلٌّ من SHA-256 وSHA3-256 ‏64 حرفًا hex، ويُنتج كلٌّ من SHA-1 وRIPEMD-160 ‏40 حرفًا. في هذه الحالات تُعيد الأداة جميع المرشَّحين. تحتاج إلى سياق — النظام المصدر أو التوثيق أو بادئات الخوارزمية — لتضييق النتائج إلى خوارزمية واحدة.
ماذا لو كان الـ hash مُرمَّزًا بـ Base64 بدلًا من hex؟
تستخدم hashes المُرمَّزة بـ Base64 مجموعة أحرف مختلفة (A-Z وa-z و0-9 و+ و/) ولها أطوال مختلفة عن نظيراتها بصيغة hex. يتكون hash الـ 256 بت من 44 حرف Base64 لكن من 64 حرف hex. فكّ ترميز سلسلة Base64 إلى بايتات خام أولًا، ثم تحقق من طول البايت: 16 بايت = MD5، و20 بايت = SHA-1، و32 بايت = SHA-256، و48 بايت = SHA-384، و64 بايت = SHA-512.
هل من الآمن لصق hashes كلمات المرور في أداة تعرُّف عبر الإنترنت؟
تعمل هذه الأداة بالكامل في متصفحك — لا تُرسَل أي بيانات إلى أي خادم. لا يغادر الـ hash جهازك قط. ومع ذلك، لتحقيق أقصى أمان تشغيلي خلال تدقيق رسمي، يمكنك التحقق من ذلك بفحص تبويب الشبكة في أدوات المطور في متصفحك أو باستخدام الأداة دون اتصال بعد تحميل الصفحة.
لماذا لا يزال MD5 مستخدَمًا رغم أنه مكسور تشفيريًا؟
كُسر MD5 من حيث مقاومة التصادم — يستطيع المهاجم صياغة مدخلَين مختلفَين يُنتجان الـ hash ذاته. غير أن MD5 لا يزال مستخدَمًا في سياقات غير أمنية: مجاميع تحقق الملفات للتحقق من التنزيلات، ومفاتيح التخزين المؤقت، وإزالة التكرار، وETags في HTTP. في هذه الأغراض، تصادمات المصادفة نادرة للغاية والهجمات المتعمدة ليست مصدر قلق. يجب عدم استخدام MD5 في تجزئة كلمات المرور أو التواقيع الرقمية أو التحقق من الشهادات.
كيف أتعرَّف على hashes bcrypt أو scrypt أو Argon2؟
تستخدم دوال تجزئة كلمات المرور مثل bcrypt وscrypt وArgon2 بادئات نصية مميزة بدلًا من مخرج hex خام. تبدأ hashes bcrypt بـ '$2a$' أو '$2b$' أو '$2y$' متبوعةً بمعامل التكلفة. تبدأ hashes Argon2 بـ '$argon2id$' أو '$argon2i$'. تبدأ hashes scrypt عادةً بـ '$scrypt$'. هذه ليست ملخصات تشفيرية خام، لذا لا ينطبق عليها التعرُّف القائم على الطول — البادئة ذاتها هي التي تُعرِّف الخوارزمية.
ما الفرق بين SHA-2 وSHA-3؟
يستند SHA-2 (الذي يشمل SHA-256 وSHA-384 وSHA-512) إلى بُنية Merkle-Damgard التي صمَّمتها وكالة الأمن القومي الأمريكية (NSA) وقُنِّنت في FIPS 180-4. أما SHA-3 (SHA3-256 وSHA3-384 وSHA3-512) فيستند إلى بُنية الإسفنج Keccak، التي اختيرت عبر مسابقة NIST عامة وقُنِّنت في FIPS 202. يُنتجان أطوال مخرج متطابقة عند مستويات أمان مماثلة، لكنهما يستخدمان بُنى داخلية مختلفة جوهريًا. صُمِّم SHA-3 كبديل احتياطي في حال اكتشاف نقاط ضعف هيكلية في SHA-2، وإن لم تُثبَت أي نقاط ضعف من هذا القبيل حتى الآن.