Menu
CoddyTech

גזירת מפתח מסיסמה

חלק מהיחידה אימות ואבטחה במסלול ה-Node.js של Coddy. שיעור 2 מתוך 24.

מפתח סיסמה מחושב מסיסמה וממלח. בניגוד לקידוד, החישוב הזה אינו מיועד להפיכה. Scrypt מקשה על ניחוש סיסמאות בכך שהוא דורש עבודה בכל ניסיון. עם אותה סיסמה, מלח והגדרות גזירה, כולל אורך המפתח, המפתח ניתן לשחזור. מפתח נגזר זה נקרא בדרך כלל גיבוב הסיסמה.

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

הארגומנט השלישי הוא אורך המפתח בבתים. העזר שסופק משתמש ב-promisify כדי להפוך את scrypt של Node, המבוססת על callback, לפונקציה שמחזירה promise. אפשר להשתמש בה עם await, כמו בקריאת קובץ. המלח הקבוע בתרגול הזה מאפשר לך להשוות תוצאות; באחסון אמיתי של סיסמאות משתמשים במלח אקראי חדש.

בתרגול הבא נוצרים המלח האקראי החדש הדרוש בעת אחסון סיסמה חדשה.

challenge icon

אתגר

קל

זהו פרויקט תרגול קטן. ההגדרה שלו מסופקת; ערכו רק את exercise.js.

השלימו את הפונקציה: גזרו מפתח באורך 32 בייטים מהסיסמה והמלח שסופקו, ואז החזירו את הטקסט שלו בייצוג הקסדצימלי בתוך key. שלחו פעמיים POST עם {"password":"practice","salt":"fixed-for-this-exercise"} אל /result: אותו מפתח בן 64 התווים יופיע. שנו אחד מהקלטים, והמפתח ישתנה.

נסו בעצמכם

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

כל השיעורים ביחידה אימות ואבטחה

תרגלו בעצמכם: Express אונליין