Menu
CoddyTech

Einen Passwortschlüssel ableiten

Teil des Abschnitts Authentifizierung und Sicherheit der Node.js-Journey von Coddy. Lektion 2 von 24.

Ein Passwortschlüssel wird aus einem Passwort und einem Salt berechnet. Anders als bei der Kodierung ist diese Berechnung nicht dafür gedacht, umgekehrt zu werden. Scrypt macht das Erraten von Passwörtern aufwendig, indem für jeden Versuch Rechenarbeit erforderlich ist. Mit demselben Passwort, Salt und denselben Ableitungseinstellungen, einschließlich der Schlüssellänge, lässt sich derselbe Schlüssel reproduzieren. Dieser abgeleitete Schlüssel wird üblicherweise Passwort-Hash genannt.

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

Das dritte Argument ist die Schlüssellänge in Byte. Der bereitgestellte Helfer verwendet promisify, um aus dem callbackbasierten scrypt von Node eine Funktion zu machen, die ein Promise zurückgibt. Du kannst darauf wie bei einem Dateizugriff mit await warten. Das festgelegte Salt ermöglicht dir in dieser Übung, Ergebnisse zu vergleichen; bei der echten Passwortspeicherung wird ein frisches, zufälliges Salt verwendet.

In der nächsten Übung wird das frische, zufällige Salt erzeugt, das zum Speichern eines neuen Passworts benötigt wird.

challenge icon

Aufgabe

Einfach

Dies ist ein kleines Übungsprojekt. Die Einrichtung ist bereits vorhanden; bearbeite nur exercise.js.

Vervollständige die Funktion: Leite aus dem angegebenen Passwort und Salt einen 32-Byte-Schlüssel ab und gib dann dessen Hexadezimaldarstellung in key zurück. Sende {"password":"practice","salt":"fixed-for-this-exercise"} zweimal per POST an /result: Es erscheint derselbe 64 Zeichen lange Schlüssel. Ändere eine der beiden Eingaben, und der Schlüssel ändert sich.

Probier es selbst

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

Alle Lektionen in Authentifizierung und Sicherheit

Übe selbstständig: Express-Playground