Хеширование и добавление пароля в поле

Я уже некоторое время вертелся вокруг вопроса о том, как хранить пароли в моей БД. Это мой первый раз, когда я создаю безопасное приложение с веб-входом, поэтому я хотел установить некоторые передовые методы.

Во-первых, я прочитал о хешировании и солении. Похоже, идея в том ...

  1. Получить алгоритм хеширования
  2. Получить пароль от пользователя
  3. Добавить «соль» к паролю в виде простого текста от пользователя
  4. хешировать весь пароль (включая соль)
  5. Сохранить соль в базе данных, чтобы вы могли получить ее позже (для проверки PSWD)

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

Тогда у меня возникла идея. Что, если бы вы сохранили свою соль внутри поля хешированного пароля. Итак, выполните шаги 1–4 (случайное создание соли), затем на шаге 5 вставьте соль в пароль в место, известное классу интерпретации пароля или службе:

xxxxxsaltvaluexxxxxxxxxxxxxxxx

, где x - хешированные строковые значения. Кто-нибудь может увидеть какие-нибудь проблемы с этим? это просто совершенно ненужно?

Ответ:
Нет причин, по которым этого нельзя было бы сделать. Как утверждает Яхья, другие методы защиты пароля включают двойное (или n) хеширование. С другой стороны, BCrypt выглядит как хороший способ почти полностью остановить атаки методом перебора, но я не смог найти надежную библиотеку для C #

Спасибо!
TTD

5
задан David Colwell 18 August 2011 в 23:38
поделиться