Получение ключа пароля
Часть раздела Аутентификация и безопасность путешествия по Node.js на Coddy. Урок 2 из 24.
Ключ пароля вычисляется на основе пароля и соли. В отличие от кодирования, этот расчёт не предназначен для обратного преобразования. Scrypt делает подбор паролей затратным, требуя выполнения вычислений для каждой попытки. При одинаковых пароле, соли и настройках выработки, включая длину ключа, результат будет воспроизводимым. Такой производный ключ обычно называют хешем пароля.
const key = await scryptAsync('invite 4821', 'example-only', 16);
return key.toString('hex');Третий аргумент — длина ключа в байтах. Предоставленный вспомогательный метод использует promisify, чтобы преобразовать scrypt в Node, основанный на обратном вызове, в функцию, возвращающую промис. Вы можете использовать с ней await, как при чтении файла. Фиксированная соль в этом упражнении позволяет сравнивать результаты; при реальном хранении паролей используется новая случайная соль.
В следующем упражнении создаётся новая случайная соль, необходимая для хранения нового пароля.
Задание
ЛегкоЭто небольшой учебный проект. Настройка уже выполнена; редактируй только 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