Menu
CoddyTech

اشتقاق مفتاح كلمة المرور

جزء من قسم المصادقة والأمان في رحلة Node.js على Coddy. الدرس 2 من 24.

يُشتق مفتاح كلمة المرور من كلمة مرور وملح. وعلى عكس الترميز، لا يُصمَّم هذا الحساب ليكون قابلاً للعكس. تجعل Scrypt تخمين كلمات المرور مكلفًا، إذ تتطلب إجراء عمليات حسابية مع كل محاولة. عند استخدام كلمة المرور والملح وإعدادات الاشتقاق نفسها، بما في ذلك طول المفتاح، يمكن إعادة إنتاج المفتاح. ويُسمى هذا المفتاح المشتق عادةً تجزئة كلمة المرور.

const key = await scryptAsync('invite 4821', 'example-only', 16);
return key.toString('hex');

المعامل الثالث هو طول المفتاح بالبايت. تستخدم الدالة المساعدة المقدَّمة promisify لتحويل scrypt المعتمدة على دالة رد نداء في Node إلى دالة تُعيد وعدًا. يمكنك استخدام await معها كما تفعل عند قراءة ملف. يتيح لك الملح الثابت في هذا التدريب مقارنة النتائج؛ أما تخزين كلمات المرور الفعلي فيستخدم ملحًا عشوائيًا جديدًا.

ينشئ التدريب التالي الملح العشوائي الجديد المطلوب عند تخزين كلمة مرور جديدة.

challenge icon

التحدي

سهل

هذا مشروع تدريبي صغير. الإعداد مُجهّز؛ عدّل exercise.js فقط.

أكمل الدالة: اشتق مفتاحًا من 32 بايتًا من كلمة المرور والملح المُعطيين، ثم أعد تمثيله النصي بالنظام الست عشري في key. أرسل {"password":"practice","salt":"fixed-for-this-exercise"} مرتين باستخدام POST إلى /result: سيظهر المفتاح نفسه المكوّن من 64 حرفًا. غيّر أيًا من المدخلين، وسيتغير المفتاح.

جرّب بنفسك

import { scryptAsync } from './crypto.js';
export async function exercise({ password, salt }) {
    return { key: password };
}

جميع دروس المصادقة والأمان

تدرّب بنفسك: Playground لـ Express