В течение некоторого времени я в течение какого-то времени разбирался с вопросом о том, как хранить пароли в моей БД.Я впервые делаю безопасное приложение с веб-входом в систему, поэтому я хотел установить некоторые полезные методы.
Сначала я прочитал о хешировании и посоле.Кажется, что идея в том, что ...
- Получить алгоритм хеширования
- Получить пароль от пользователя
- Добавить 'соль' к обычному текстовому паролю от пользователя
- хеширует весь пароль (включая соль)
- Сохраните соль в БД, чтобы вы могли получить ее позже (для проверки PSWD)
И это заставило меня задуматься... Если хакер знает вашу соль (потому что она где-то хранится в БД, может быть, столбец с именем this_is_not_the_salt_ur_looking_for
или что-то столь же неоднозначное), он может заново сгенерировать словарь паролей и получить доступ.
Тогда у меня появилась идея.Что делать, если вы сохранили свою соль внутри поля хешированного пароля.Поэтому выполните шаги 1-4 (случайное создание соли), а затем на шаге 5 вставьте соль в пароль, известный как класс или служба интерпретации пароля:
xxxxxsaltvaluexxxxxxxxxxxxxxxx
, где x - этохешированные строковые значения.Кто-нибудь может увидеть какие-либо проблемы с этим?это просто совершенно ненужно?
Ответ:
Нет причин, по которым это невозможно сделать.Как утверждает Yahia, другие методы защиты пароля включают двойное (или n) хеширование.С другой стороны, BCrypt выглядит как хороший метод почти полного прекращения атак методом перебора, но я не смог найти доверенную библиотеку для C #
Спасибо!
TTD