Хранение зашифрованного пароля в базе данных - PullRequest
0 голосов
/ 17 октября 2010

Я думал, что это было бы намного проще, но на данный момент я запутался и не прогрессировал вообще.

По сути, мне нужно иметь возможность принять пароль от пользователя вприложение WPF, зашифруйте его, затем сохраните в базе данных и сможете расшифровать позже.Однако я не уверен, как это реализовать.

Это совершенно тривиально, поэтому не важно, безопасно это или нет.Все, что мне нужно, это только для того, чтобы начать работать. Я не уверен, как именно это сделать.Я пытался поиграться с DESCryptoServiceProvider (), но нигде не получил.

Чтобы было ясно, как именно мне нужно преобразовать простой пароль в зашифрованный и сохранить его в базе данных (и в каких полях я бы его хранил).На данный момент, я рад, если есть только один ключ, и этот ключ определяется в исходном коде.

Есть предложения?

Редактировать: уточнить, я не могу 'закодировать.Он должен быть зашифрован для целей этого упражнения (т. Е. Должен быть сгенерирован ключ).Я считаю, что SHA - это алгоритм кодирования, а не шифрование.

Ответы [ 4 ]

4 голосов
/ 17 октября 2010

Не пытайтесь кодировать свою собственную схему для этого, вы, скорее всего, ошибетесь и оставите это небезопасным.

Лучше использовать что-то вроде BCrypt , чтобы сделать это для вас.

А что касается того, как его хранить, BCrypt вернет строковую кодировку хешированного пароля, которую очень легко сохранить в базе данных.

Чтобы было ясно, это работает так. При первом сохранении пароля пользователя вы:

  • получить пароль от пользователя
  • передать пароль методу BCrypt HashPassword
  • возвращает строку, которая является хешем пароля
  • вы сохраняете хеш в базе данных против записи пользователя

Когда пользователь заходит позже, вы:

  • получить пароль от пользователя
  • получить хеш для пользователя из базы данных
  • передать хэш и пароль, предоставленные пользователем, методу BCrypt CheckPassword
  • BCrypt возвращает true или false в зависимости от того, соответствует ли пароль
3 голосов
/ 17 октября 2010

Есть ли что-то против использования одностороннего шифрования?SHA сделает это - вам не нужно расшифровывать его, вам нужно только проверить, что пользователь снова вводит правильный пароль, что можно сделать, зашифровав введенный пароль и сравнив полученный хеш с хешем, хранящимся в вашей базе данных.1001 *

Не забудьте посолить!

2 голосов
/ 17 октября 2010

Вам необходимо хранить необратимый соленый хеш-код пароля.

Использование SHA512Managed.

0 голосов
/ 17 октября 2010

Если вы используете SQL Server 2005 или более позднюю версию, в базе данных есть встроенное шифрование , которое можно использовать для защиты данных без написания собственного кода дешифрования / шифрования.

В этой статье рассматривается SQL 2005 - для запуска SQL 2008 здесь .

Алгоритмы шифрования определяют преобразования данных, которые не могут быть легко изменены неавторизованными пользователями.SQL Server позволяет администраторам и разработчикам выбирать из нескольких алгоритмов, включая DES, Triple DES, TRIPLE_DES_3KEY, RC2, RC4, 128-битный RC4, DESX, 128-битный AES, 192-битный AES и 256-битный AES.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...