Wyprowadzanie klucza z hasła
Część sekcji Uwierzytelnianie i bezpieczeństwo ścieżki Node.js w Coddy. Lekcja 2 z 24.
Klucz hasła jest obliczany na podstawie hasła i soli. W przeciwieństwie do kodowania tego obliczenia nie zaprojektowano tak, by można je było odwrócić. Scrypt sprawia, że zgadywanie haseł jest kosztowne, ponieważ wymaga pracy przy każdej próbie. Przy tym samym haśle, soli i ustawieniach wyprowadzania, w tym długości klucza, klucz można odtworzyć. Tak uzyskany klucz jest powszechnie nazywany skrótem hasła.
const key = await scryptAsync('invite 4821', 'example-only', 16);
return key.toString('hex');Trzeci argument określa długość klucza w bajtach. Dostarczony pomocnik używa promisify, aby przekształcić oparty na wywołaniu zwrotnym mechanizm scrypt z Node w funkcję zwracającą obietnicę. Możesz użyć wobec niej await, tak jak przy odczycie pliku. Stała sól w tym ćwiczeniu pozwala porównywać wyniki; do przechowywania prawdziwych haseł używa się nowej, losowej soli.
W następnym ćwiczeniu zostanie wygenerowana nowa losowa sól potrzebna przy przechowywaniu nowego hasła.
Wyzwanie
ŁatwyTo niewielki projekt ćwiczeniowy. Konfiguracja jest już przygotowana; edytuj tylko exercise.js.
Dokończ funkcję: wyprowadź klucz o długości 32 bajtów z podanego hasła i soli, a następnie zwróć jego zapis szesnastkowy w key. Wyślij dwukrotnie żądanie POST z treścią {"password":"practice","salt":"fixed-for-this-exercise"} na adres /result: pojawi się ten sam 64-znakowy klucz. Zmień dowolne z danych wejściowych, a klucz się zmieni.
Spróbuj swoich sił
import { scryptAsync } from './crypto.js';
export async function exercise({ password, salt }) {
return { key: password };
}
Wszystkie lekcje w sekcji Uwierzytelnianie i bezpieczeństwo
1Hasła
Bajty i zapis szesnastkowyWyprowadzanie klucza z hasłaNowa sólNigdy nie przechowuj hasełPorównywanie bajtów kluczaSprawdzanie hasłaZasady rejestracjiPoćwicz samodzielnie: Edytor online Express