Отменить хешированный пароль с помощью pbkdf2

Я использую алгоритм pbkdf2 для хэширования паролей. Для каждого пароля генерируется случайная соль, а количество итераций устанавливается для того, чтобы вычисление длилось около 1 секунды.

Я также сохраняю соль и хеш в буфере sambe:

   -----------------------
   | SaltLen |     4     |
   -----------------------
   | Salt    | saltBytes |
   -----------------------
   | HashLen |     4     |
   -----------------------
   | Salt    | hashBytes |
   - ---------------------

Моя проблема в том, что этот хешированный пароль не связан с одним пользователем (у пользователя может быть несколько паролей), и мне нужно иметь возможность отменить пароль только с использованием самого пароля. Единственный способ, которым я вижу, - это хешировать пароль для отмены каждой соли в базе данных, пока не будет найден тот же хеш, который будет длиться вечно (1 секунда на соль).

Есть ли лучший способ сделать это?

1 ответ

Нет смысла рассматривать лицензии как пароли.

PBKDF2 & итерации имеют смысл только для проверок на стороне клиента. На стороне сервера они просто позволяют выполнять DOS-атаку на ваш сервер. В любом случае на сервере вы можете просто добавить задержку в 1 секунду для каждого запроса.

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

Для проверки правильности ввода лицензии вам просто нужно добавить идентификатор записи базы данных лицензии к самой лицензии, и вы точно знаете, какую запись проверять.

Другие вопросы по тегам