Я только что ввел аутентификацию пользователя для моего REST API и использовал bcrypt для хэширования паролей. При создании пользователя я делаю
const passwordSalt: string = await genSalt(12);
const passwordHash: string = await hash('pAsSwOrD', passwordSalt);
и сохраняю ha sh в базе данных. Позже, когда пользователь входит в систему, я сравниваю предоставленный пароль с паролем базы данных ha sh.
const passwordMatches: boolean = await compare('wRoNg pAsSwOrD', user.passwordHash);
Я знаю, что функция сравнения должна быть медленной, чтобы противостоять атакам методом перебора. Но функция сравнения занимает больше минуты. Пользователи не будут ждать, пока это завершится. Так что-то не так с моим кодом?
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.