Я хочу обновить настройки моего пароля, которые в настоящее время используют только MD5.сохранение соляного пароля
Теперь то, что я хотел бы сделать, это использовать что-то более сильное (возможно, sha256) с уникальной солью на пользователя.
Вопрос о хранении соли.
Нужно ли хранить соль в своей колонке в базе данных?
Затем добавьте соль + пароль, и когда дело доходит до входа в систему, вызовите соль и пароль из базы данных, чтобы сделать это.
Или я могу сделать соль, используя имя пользователя, адрес электронной почты и временную метку, что также даст мне уникальную соль для каждого пользователя?
Мне интересно, если кто-то задержит базу данных с солью в качестве столбца, они будут знать соль для каждого пользователя, тогда они могут взломать пароль.
Как соль не может быть секрет? Если злоумышленник знает соль, он может легко изменить атаку словаря, чтобы включить соль и вуаля! –
@Martins Briedis - Предварительное вычисление всех хэшей определенного словаря обычно называют радужным столом.Злоумышленник не мог использовать уже существующие общедоступные радужные таблицы (просто поиск по хэшированию), потому что радуга должна быть сделана точно для одной конкретной соли (или для оригинального словаря, если соль не использовалась). – martinstoeckli
@Martins Briedis - Забыл упомянуть, что создание радужного стола - это не задача, которую вы делаете за несколько секунд. Когда вы используете медленную хеш-функцию (например, bcrypt), ей нужно много времени, и если вы используете для каждого пароля другую соль, вам нужно много времени для каждого пароля. – martinstoeckli