Прежде всего, вы не должны шифровать пароли.Вы должны хешировать их (об этом всегда идет спор).
Для хеширования паролей вы можете использовать HMACSHA1 .Например, при создании пользователя и до сохранения пароля:
HMACSHA1 hash = new HMACSHA1();
hash.Key = youKey; // you could use machine key
encodedPassword = Convert.ToBase64String(hash.ComputeHash(Encoding.Unicode.GetBytes(password)));
, а затем сохраните это значение в базе данных.Затем вы можете сравнить введенный пароль, хэшируя его и сравнивая хэшированные значения.
Конечно, вам нужно указать, что пароль хэшируется в файле конфигурации:
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
<providers>
<remove name="AspNetSqlProvider" />
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
passwordFormat="Hashed"
applicationName="/" />
</providers>
</membership>
Проверьте мой сообщение в блоге об этом.Там есть пример использования хешированных и зашифрованных паролей.