تخطَّ إلى المحتوى

crypto.createHash()

تجزئة بيانات (Hashing) crypto.createHash()

crypto.createHash() تنشئ كائن تجزئة (Hash) بخوارزمية محدَّدة، تُغذّى بالبيانات عبر update() وتُنتج النتيجة النهائية عبر digest().

crypto.createHash(algorithm) تُرجع كائن Hash. تستدعي update(data) مرة أو أكثر لتغذيته بالبيانات (يمكن دمجها من أكثر من قطعة)، ثم digest([encoding]) لإنهاء العملية والحصول على الناتج — كنص (hex, base64) أو كـ Buffer إن لم تحدّد ترميزًا.

من الخوارزميات الشائعة: sha256 وsha512 (يُنصح بهما اليوم)، مقابل md5 وsha1 اللتين تُعتبران ضعيفتين أمنيًا رغم بقائهما مدعومتين. مهم: createHash لا تصلح مباشرة لتجزئة كلمات المرور لأنها سريعة جدًا بالتصميم — لكلمات المرور تُستخدم خوارزميات مخصَّصة أبطأ عمدًا مثل bcrypt أو scrypt.

الصياغة

crypto.createHash(algorithm[, options])

📄 مثال

const crypto = require('node:crypto');

const hash = crypto.createHash('sha256');
hash.update('نص أريد تجزئته');
const digest = hash.digest('hex');
console.log(digest);

// دمج أكثر من قطعة بيانات:
const hash2 = crypto.createHash('sha256');
hash2.update('جزء أول ');
hash2.update('جزء ثاني');
console.log(hash2.digest('hex'));

أهم المعاملات

المعاملالوظيفة
algorithmاسم خوارزمية التجزئة، مثل 'sha256' أو 'sha512'
hash.update(data)تغذية الكائن بالبيانات — يمكن استدعاؤها أكثر من مرة
hash.digest([encoding])إنهاء العملية وإرجاع الناتج — 'hex' أو 'base64' أو Buffer بدون ترميز

💡 نصائح عملية

  • استخدم sha256 كخيار افتراضي معقول لأغراض عامة (بصمات ملفات، تحقق تكامل بيانات)

⚠️ أخطاء شائعة

  • استخدام createHash المباشرة لتجزئة كلمات مرور المستخدمين — يجب استخدام bcrypt أو scrypt المصمَّمتين لتكونا بطيئتين عمدًا لمقاومة هجمات القوة الغاشمة
  • استخدام خوارزميات قديمة مثل md5 أو sha1 لأي غرض أمني — تُعتبر ضعيفة اليوم وقابلة للكسر

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار NODEJS الكامل بالعربي.