Одним из самых простых решений для хеширования паролей в 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)