@Farazendasss

Как производиться валидация захешированного пароля?

Когда пользователь регистрируется пароль с помощью bcryptjs хешируется , и этот набор символов записывается в базу данных. Если вводить один и тот же пароль несколько раз- хеш всегда будет разный.
Вопрос: каким образом сравнивать пароли зарегистрированных пользователей ?
Сравнить с тем который в базе не получится так как он хеширован. Если захешировать пароль пользователя, то это будут 2 разных хеша.

Я понимаю вопрос досточно простой. Но понимание почему то не приходит.
Прошу объяснить.

в идеале объяснить на методах bcryptjs
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
Если вводить один и тот же пароль несколько раз- хеш всегда будет разный
нет. Вся суть хэш функций, что при всей своей необратимости они всегда выдают детерминированный результат, то есть простым языком на одни и те же входные параметры выдаются одни и те же выходные.
То есть один и тот же пароль всегда даст один и тот же хэш.

Конкретно с bcrypt - это хэш с солью. То есть у него не 1 входной параметр (пароль), а 2 - пароль и соль. При создании нового хэша генерируется новая соль (в идеале крипто рандомом). Поэтому и меняется хэш. Это усложняет взлом, так как без соли я бы просто мог иметь заранее рассчитанный словарик хэшей для частых паролей, а с солью мне придется делать полный перебор, даже если у пользователя банальный qwerty пароль.

Для валидации соль хранится в базе вместе с хэшем, мы просто не генерируем новую соль, а хэшируем с сохраненной.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы