Хеширование паролей с bcrypt

Одним из самых простых решений для хеширования паролей в nodejs есть библиотека bcryptjs.

Для того, чтобы создать хэш пароля, достаточно просто вызвать метод bcryptjs.hash:

const plainPassword = 'пароль полученный от пользователя';
const costFactor = 6; // насколько безопасно и долго будет проходить операция
                      // хеширования и операция сравнения хешей
                      
// bcryptjs.hash - асинхронная функция, что возвращает промис
// после завершения, промис возвращает хеш пароля
const passwordHash = await bcryptjs.hash(plainPassword, costFactor);

Стоит заметить, что в результате выполнения bcryptjs.hash входит соль, которая использовалась для хеширования. Поэтому следующая функция (bcryptjs.compare) не требует передачи соли для сравнения пароля с имеющимся хешом.

Для того, чтобы сравнить пароль, полученный от пользователя, и хэш пароля из базы данных, используется метод bcryptjs.compare:

const receivedPassword = 'пароль полученный от пользователя';

// passwordHash с предыдущего примера
// bcryptjs.compare - асинхронная функция, что возвращает промис

// после завершения, промис возвращает true, если пароль соответствует хешу
// и false - если нет
const isRightPassword = await bcryptjs.compare(receivedPassword, passwordHash)

Last updated