Безопасное хранение пароля пользователя

Есть приложение на C# .NET. В нём есть CheckBox «Запомнить пароль».

Вопрос: Как лучше всего организовать безопасное хранение пользовательского пароля? Читал, что можно шифровать при помощи машинного ключа(UPD: скорее, такой вариант проходит только для ASP.NET-приложений, не для десктопных), но уже не припомню где. Какой подход самый приемлемый или популярный? Ткните носом в хороший пример.

UPD1: Есть подозрения, что нужно использовать
-> System.IO.IsolatedStorage Namespace
-> Windows Crypto API

UPD2: Решение практически найдено, но полной уверенности в правильности подхода нет. Собираюсь использовать класс System.Security.Cryptography.ProtectedData, инкапсулирующий функциональность Windows Data Protection API (DPAPI). Я избрал верный путь?

UPD3: Окончательно остановился на System.Security.Cryptography.ProtectedData. Подробнее о DPAPI в .NET читать тут и тут.
  • Вопрос задан
  • 10191 просмотр
Пригласить эксперта
Ответы на вопрос 2
soks
@soks
Идеальный вариант преобразование пароля в хэш-код и хранения в базе именно хэша.
Особо популярные SHA-1 MD5 хэши, в .Net есть встроенные функции по генерированию хэшей.
Пример: пароль «пароль» преобразовывается в «5b2ff20a6d9ac7899fe8d9e8e35cc922» и заносится в базу. При последующей валидации пароля проверяется хэш введенного пароля и хэша из базы.
Ответ написан
Riateche
@Riateche
Могу ошибаться, но Jabber вроде поддерживает авторизацию по хешированному паролю, без передачи исходного пароля. Если вы, конечно, пишете jabber-клиент, а не сервер.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы