Derivare una chiave dalla password
Fa parte della sezione Autenticazione e sicurezza del percorso Node.js di Coddy. Lezione 2 di 24.
Una chiave di password viene calcolata a partire da una password e da un salt. A differenza della codifica, questo calcolo non è progettato per essere invertito. Scrypt rende costosi i tentativi di indovinare la password richiedendo lavoro per ogni tentativo. Con la stessa password, lo stesso salt e le stesse impostazioni di derivazione, inclusa la lunghezza della chiave, la chiave è riproducibile. Questa chiave derivata è comunemente chiamata hash della password.
const key = await scryptAsync('invite 4821', 'example-only', 16);
return key.toString('hex');Il terzo argomento è la lunghezza della chiave in byte. L'helper fornito usa promisify per trasformare scrypt di Node, basato su callback, in una funzione che restituisce una promise. Puoi usare await come per la lettura di un file. Il salt fisso di questo esercizio ti consente di confrontare i risultati; per memorizzare password reali si usa un salt casuale nuovo.
Il prossimo esercizio genera il salt casuale nuovo necessario quando si memorizza una nuova password.
Sfida
FacileQuesto è un piccolo progetto di esercitazione. La configurazione è già fornita; modifica solo exercise.js.
Completa la funzione: ricava una chiave di 32 byte dalla password e dal salt forniti, quindi restituisci il suo testo esadecimale in key. Invia due volte POST {"password":"practice","salt":"fixed-for-this-exercise"} a /result: compare la stessa chiave di 64 caratteri. Modifica uno dei due input e la chiave cambia.
Provalo tu
import { scryptAsync } from './crypto.js';
export async function exercise({ password, salt }) {
return { key: password };
}
Tutte le lezioni di Autenticazione e sicurezza
1Password
Byte e testo esadecimaleDerivare una chiave dalla passwordUn nuovo saltNon memorizzare mai le passwordConfrontare i byte della chiaveVerificare una passwordRegole di registrazioneEsercitati da solo: Playground Express