Я сделал это сам несколько лет назад, до того, как была доступна модель поставщика членства.
Мы использовали встроенные в ASP.NET функции для обработки хэширования пароля; это статический метод HashPasswordForStoringInConfigFile в пространстве имен FormsAuthentication. Вы даете ему пароль и выбор шифрования, и он возвращает хешированный пароль.
Наш поток был:
- Получить хешированный пароль из базы данных для введенного имени пользователя.
- Хэш введенного пароля.
- Они совпадают? Если это так, продолжайте, иначе вход не удался.
При смене пароля мы отправили хеш в базу данных для хранения; мы не отправили незашифрованный пароль.
И, я полагаю, это то, что делает MembershipProvider сегодня под прикрытием.
Еще раз повторюсь, что самая важная часть при выполнении проверки подлинности на основе форм независимо от того, как вы это делаете, - это работа через безопасное (HTTPS) соединение.