Фон
Вы никогда ... действительно ... не должны знать пароль пользователя. Вы просто хотите убедиться, что входящий пользователь знает пароль для учетной записи.
Hash It:
храните хэши паролей пользователей (одностороннее шифрование) с помощью надежной хэш-функции. Поиск "c # encrypt паролей" дает множество примеров.
Обратитесь к онлайн-создателю хеш-функции SHA1, чтобы узнать, что создает хеш-функция (но не используйте SHA1 в качестве хеш-функции, используйте что-то более сильное, например, SHA256).
Теперь хешированные пароли означают, что вы (и воры базы данных) не должны иметь возможность вернуть этот хеш обратно в исходный пароль.
Как это использовать:
Но, вы говорите, как мне использовать этот пароль, хранящийся в базе данных?
Когда пользователь входит в систему, он выдаст вам имя пользователя и пароль (в исходном тексте). Вы просто используете тот же хеш-код для хеширования введенного пароля, чтобы получить сохраненную версию.
Итак, сравните два хешированных пароля (хэш базы данных для имени пользователя и введенный и хешированный пароль). Вы можете сказать, «соответствовали ли они тому, что они ввели, тому, что исходный пользователь ввел для своего пароля», сравнив их хеши.
Дополнительный кредит:
Вопрос: Если бы у меня была ваша база данных, то не мог бы я просто взять взломщик, такой как Джон Потрошитель, и начать делать хэши, пока не найду совпадения с вашими хешированными паролями? (так как пользователи выбирают короткие словарные слова в любом случае ... это должно быть легко)
Ответ: да ... да, они могут.
Итак, вы должны «засолить» свои пароли. Смотрите статью в Википедии о соли
Смотрите "Как хэшировать данные с солью" C # пример