Я унаследовал приложение, которое использует поставщика членства ASP.NET для управления пользователями. В рамках различных исправлений и улучшений я заменяю использование простых текстовых паролей хэшированными. На существующей странице сброса пароля пользователь должен снова ввести правильный ответ на свой секретный вопрос, свой текущий пароль, новый пароль и новый пароль.
Я столкнулся с проблемой, из-за которой нет простого способа проверить правильность ответа на введенный секретный вопрос. Без этой проверки пользователь может ввести в это поле все, что угодно, и если он введет правильный текущий пароль, он будет сброшен.
Я не могу вызвать GetPassword () , так как этот метод недоступен, если passwordFormat = "Hashed" в Web.config.
Я попытался вручную расшифровать ответ с хешированным секретным вопросом, как описано здесь , но это относится только к зашифрованным значениям, а не к хешированным (логично, я полагаю:))
Я пытался вручную хэшировать введенный пользователем ответ и сравнивать его со значением, хранящимся в базе данных, но две хэшированные строки различны. Я использую алгоритм, описанный в третьем посте здесь , и он работает при сравнении хешированных паролей, но, к сожалению, не для ответа на хешированный секретный вопрос.
У кого-нибудь есть еще предложения? Это кажется довольно фундаментальным, поэтому я чувствую, что упускаю что-то очевидное.