В моем приложении пароль зашифрован, и если пользователь забывает пароль, его невозможно восстановить. Теперь мы отменяем эту учетную запись пользователя и создаем новую. Теперь мне нужен правильный метод для восстановления пароля. Вход выполняется с помощью инструмента настройки Asp.net. Как я могу восстановить свой пароль, используя это? Есть ли альтернативный вариант для этого? Как я могу расшифровать свой пароль в базе данных?Восстановление пароля с использованием Asp.net
ответ
Идея состоит в том, что никто не может расшифровать пароль (включая владельца базы данных). Обычно вы должны генерировать новый пароль &, чтобы отправить его пользователю, а также шифровать его &, помещая его в базу данных.
Как вы шифруете свои пароли? Это одностороннее шифрование и может быть расшифровано только с помощью правильного пароля? Если так - игра закончилась.
Вы можете изменить метод шифрования, чтобы его можно было дешифровать с помощью ключа (который не является паролем, это может быть, например, комбинация идентификатора пользователя, даты рождения и секретного слова, которое он вводит, который сохраняется в незашифрованном БД).
Затем пароль можно дешифровать с помощью ключа, и все будут счастливы.
Как уже говорилось, , надеюсь, пароль зашифрован в базе данных одним способом. Один метод, используемый многими сайтами для восстановления , должен генерировать хэш основного имени пользователя и адреса электронной почты пользователей. Попросите их предоставить эту информацию, а затем хэш. Если он совпадает, сгенерируйте новый случайный пароль, зашифруйте его и перезапишите старый пароль. Отправьте по электронной почте пользователю новый пароль на адрес электронной почты, который они изначально предоставили, и отметьте строку в базах данных, чтобы заставить их изменить ее при следующем входе в систему (обычно это делается, если пароли создаются вручную).
Несколько сайтов, которые я знаю, позволяют вам восстановить свой пароль, и я предполагаю, что они используют обратимый (то есть симметричный) алгоритм ключа для генерации пароля. Чтобы сделать это и не располагать его владельцем сайта, вам необходимо предоставить пользователю две части информации (имя пользователя и известную им соль), которые применяются для защиты данных входа и могут быть использованы для восстановления Это.
Вы можете посмотреть криптографию с симметричным ключом на MSDN для получения дополнительной информации. На самом деле, хотя я рекомендую против, используя эту технику, генерация нового пароля предпочтительнее, если это возможно.
Вы используете стандартный поставщик членства в ASP.NET? – RickNZ