Шифрование пароля в C #? - PullRequest
       22

Шифрование пароля в C #?

2 голосов
/ 03 октября 2009

Как я могу зашифровать и расшифровать пароли в C #? Спасибо за любую помощь.

Ответы [ 2 ]

10 голосов
/ 03 октября 2009

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

Разница между хешем и шифрованием заключается в том, что с помощью шифрования вы можете восстановить исходный текст, тогда как с помощью хеша вы не можете.

Ознакомьтесь с SHA (алгоритм безопасного хеширования) и другими алгоритмами хеширования. Это должно дать вам хорошее начало.

Еще лучше узнать о встроенном Членском API в .NET. Его практически тривиально реализовать, и он управляет всей этой неприятностью, связанной с идентификаторами пользователей, паролями, входом в систему, выходом из системы и лотом для вас.

2 голосов
/ 03 октября 2009

ОБНОВЛЕНО

См. Этот ответ: C # Шифрование пароля

- или -

Читать этот пост: http://csharptest.net/470/another-example-of-how-to-store-a-salted-password-hash/


В интернете много хорошей и плохой информации о хранении паролей. Вам нужно знать две вещи:

  1. Чтобы предотвратить атаки по словарю, вы должны использовать 'соленый' хеш
  2. Вы используете как минимум SHA256 провайдер хеша

Быстрый поиск дал мне этот пример кода: http://www.obviex.com/samples/hash.aspx

и я бы пошел с этим утилитарным классом SaltedHash (выглядит довольно полным с первого взгляда):

http://www.dijksterhuis.org/creating-salted-hash-values-in-c/

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