Соль и хеширование паролей с использованием Linq To SQL - PullRequest
10 голосов
/ 24 февраля 2009

Мне нужно посолить и хэшировать некоторые пароли, чтобы я мог безопасно хранить их в базе данных. Есть ли у вас какие-либо советы или идеи относительно того, как лучше всего это сделать с помощью Linq To SQL?

Ответы [ 4 ]

25 голосов
/ 24 февраля 2009

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

Шаги по сохранению пароля будут проходить следующим образом:

  1. Получите пароль в виде открытого текста вместе с идентификатором пользователя.
  2. Генерируй (и помни) соль.
  3. Объедините соль с текстом пароля, например, добавить или добавить.
  4. Хешируйте полученный текст с помощью вашей хэш-функции
  5. Сохраните идентификатор пользователя, хэш и соль в вашей БД.

Шаги для проверки пароля будут проходить следующим образом:

  1. Получите пароль в виде открытого текста вместе с идентификатором пользователя.
  2. Извлечение хэша и соли из БД для предоставленного идентификатора пользователя.
  3. Объедините соль с предоставленным текстом пароля.
  4. Хешируйте полученный текст с помощью вашей хэш-функции.
  5. Сравните хеш из функции с хешем, полученным из БД.
  6. Если они равны, указанный пароль был верным.
3 голосов
/ 24 февраля 2009

Поскольку вы используете .NET и C #, пользователь может использовать пространство имен System.Security.Cryptography.SHA512Managed для генерации солт-значения и хэша пароля

1 голос
/ 24 февраля 2009

В основном, как говорит @ Воислав .

Возможно, вы захотите посмотреть на bcrypt для хеширования - считается, что оно очень хорошее.

0 голосов
/ 19 октября 2012

Если для входа в учетную запись пользователя вы не хотите использовать только хэширование с солью и паролем, вы также хотите использовать растяжение ключа в соответствии с PBKDF2 в документе RFC2898.

Вот API, чтобы сделать то, что вам нужно с примером использования: https://sourceforge.net/projects/pwdtknet

Также создает криптослучайную соль указанной длины

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