Мне нужно создать систему аутентификации для экспресс-приложения, которое я создаю.Клиент попросил иметь систему паролей, которая использует только 4-значный пин-код.У меня есть настройка кода для сохранения и хеширования булавки с остальной информацией пользователя при создании нового пользователя, и проект является просто внутренним сервером, поэтому ему не нужно обрабатывать тонну пользователей.
Моя проблема при входе пользователя в систему. Я использую bycrypt для хеширования пароля, но bycrypt генерирует совершенно новый хэш для идентичных строк.
У меня возникают проблемы при извлечении пользователя с помощьюWHERE hash=hash
поиск SQL.Но это не работает, потому что хэш каждый раз отличается, даже когда пароли идентичны.
Я мог бы получить всех пользователей и перебрать их всех и использовать метод .compare
bycrypt.Но это не сработает в долгосрочной перспективе, так как количество пользователей растет, и bycrypt собирает много времени на процессор, чтобы помочь предотвратить атаки методом перебора.
Я также мог бы создать свою собственную функцию хеширования,Тем не менее, это сделало бы это так, что я должен хранить соли с каждым пользователем, чтобы сделать каждый пароль уникальным.Затем возникает та же проблема, связанная с отсутствием одинакового хэша для идентичных строк.
Я знаю, что это расплывчато, но мне нужна помощь, чтобы придумать способ получить пользователя, извлекая его с использованием хешированного пароля.