Передумови
Ви ніколи ... дійсно ... не повинні знати пароль користувача. Ви просто хочете переконатися, що вхідний користувач знає пароль для облікового запису.
Hash It:
Зберігайте хешовані паролі користувачів (одностороннє шифрування) за допомогою сильної хеш-функції. Пошук "паролів шифрування c #" дає безліч прикладів.
Дивіться в Інтернеті SHA1-хеш-творця, щоб дізнатись про те, що виробляє хеш-функція (Але не використовуйте SHA1 як хеш-функцію, використовуйте щось сильніше, наприклад, SHA256).
Тепер хешовані паролі означають, що ви (і злодії бази даних) не повинні мати змогу повернути цей хеш у вихідний пароль.
Як ним користуватися:
Але, скажете, як я можу використовувати цей пюре, збережений у базі даних?
Коли користувач увійде в систему, він передасть вам ім'я користувача та пароль (в оригінальному тексті). Ви просто використовуєте той самий хеш-код, щоб отримати хеш цього введеного пароля, щоб отримати збережену версію.
Отже, порівняйте два хешовані паролі (хеш бази даних для імені користувача та введений і хешований пароль). Ви можете сказати, чи "те, що вони ввели", збігалося з тим, що ввів початковий користувач для свого пароля ", порівнюючи їх хеши.
Додатковий кредит:
Питання: Якби я мав вашу базу даних, то чи не міг би я просто взяти зломщик, як Джон Розпушувач, і почати робити хеші, поки не знайду збіги з вашими збереженими, хешированими паролями? (оскільки користувачі в будь-якому випадку вибирають короткі, словникові слова ... це повинно бути легко)
Відповідь: Так ... так, вони можуть.
Отже, вам слід «посолити» ваші паролі. Дивіться статтю Вікіпедії про сіль
Див. Приклад C # "Як хеш-дані з сіллю"