البرمجة

تشفير كلمات المرور باستخدام Node.js

في البداية، يجب أن نفهم الطلب الذي تقدمت به. يبدو أنك تبحث عن الشيفرة في لغة Node.js التي تعادل الاستعلام المعطى في T-SQL. هذا الاستعلام في T-SQL يستخدم الدالة HASHBYTES لتشفير كلمة المرور بخوارزمية SHA1 مع استخدام الدالة CONVERT لتحويل البيانات إلى نص قبل تشفيرها.

في لغة Node.js، يمكنك استخدام مكتبة crypto المدمجة لتنفيذ نفس العملية. إليك كيف يمكن تحقيق ذلك:

javascript
const crypto = require('crypto'); function encryptPassword(password, salt) { const hashedPassword = crypto.createHash('sha1') .update(password, 'utf8') .digest('hex'); const combined = hashedPassword + salt; const finalHash = crypto.createHash('sha1') .update(combined, 'utf8') .digest('hex'); return finalHash; } // استخدام الدالة const encryptedPassword = encryptPassword('test', 'mysalt'); console.log(encryptedPassword);

في هذه الشيفرة، نقوم أولاً بإنشاء كائن مشفر من نوع sha1 باستخدام crypto.createHash('sha1'). ثم نقوم بتحديث الكائن بكلمة المرور المعطاة ونوع الترميز ‘utf8’ باستخدام الدالة update(). بعد ذلك، نستخرج القيمة المشفرة باستخدام الدالة digest('hex').

ثم نقوم بدمج كلمة المرور المشفرة مع الملح المعطى. بعد ذلك، نقوم بتشفير الناتج النهائي مرة أخرى باستخدام نفس العملية للحصول على النتيجة النهائية.

أخيراً، نقوم باستدعاء الدالة encryptPassword مع متغيرات ‘test’ و ‘mysalt’ كمثال، ونعرض الناتج باستخدام console.log.

هذه الوظيفة في Node.js ستقوم بإنشاء نفس النتيجة كما في الاستعلام T-SQL الأصلي.

المزيد من المعلومات

بالطبع، دعني أوضح بعض المعلومات الإضافية حول الشيفرة التي تم توفيرها:

  1. استخدام مكتبة Crypto: في الشيفرة المقدمة، تم استخدام مكتبة crypto المدمجة في Node.js لأغراض التشفير. هذه المكتبة توفر واجهة للتشفير وفك التشفير والتوقيع الرقمي وتوليد الأرقام العشوائية، والعديد من الوظائف الأخرى المتعلقة بالأمان.

  2. التشفير بخوارزمية SHA1: تم استخدام خوارزمية تشفير SHA1 في هذه الوظيفة. يُعتبر تشفير SHA1 من أحدث الخوارزميات التي تستخدم عادة في تشفير كلمات المرور والبيانات الحساسة. ومع ذلك، يُفضل الآن استخدام خوارزميات أكثر أمانًا مثل SHA256 أو SHA512.

  3. تشفير مع الملح (Salt): تم دمج ملح (salt) بكلمة المرور المشفرة قبل تشفير الناتج النهائي. هذا يزيد من أمان عملية التشفير بمنع استخدام قوائم التجزئة (rainbow tables) لفك التشفير بسهولة.

  4. تنسيق الناتج: يتم إرجاع الناتج بتنسيق hex (hexadecimal)، وهو تنسيق شائع يُستخدم لتمثيل البيانات الثنائية بشكل نصي يعتمد على الأرقام والحروف من 0 إلى F.

  5. اختبار وظيفة التشفير: يُظهر المثال المقدم استخدام الوظيفة encryptPassword مع قيمة ‘test’ ككلمة مرور و ‘mysalt’ كملح. يمكنك استبدال هذه القيم بالقيم الفعلية التي تريد تشفيرها.

باستخدام هذه المعلومات، يمكنك فهم كيفية تشفير كلمات المرور في تطبيقك باستخدام Node.js بطريقة آمنة وموثوقة.

زر الذهاب إلى الأعلى