Как лучше всего зашифровать пароль? - PullRequest
5 голосов
/ 04 декабря 2010

Я собираюсь сделать «Вход» для своего приложения, и мне было интересно, как лучше зашифровать пароль для моего пользователя, который я введу в свою базу данных? Я нашел много способов в Google, но не знаю, какой из них лучший.

Ответы [ 5 ]

8 голосов
/ 04 декабря 2010

Я бы пошел с односторонним соленым хешем .

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

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

Добавляя соль в смесь, вы гарантируете, что хэш для паролей, которые должны быть одинаковыми, имеет другой хэш, потому что соленая часть отличается. Таким образом, если два пользователя имеют один и тот же пароль «Password1234», сохраненный хэш для обоих не будет одинаковым, поэтому невозможно определить, что два пользователя имеют одинаковый пароль.

3 голосов
/ 04 декабря 2010

Я рекомендую использовать Rfc2898DeriveBytes

Используется хорошая стандартизированная функция получения ключа и современные хэши.Вам нужно ввести соль в дополнение к паролю, чтобы предотвратить радужные таблицы.И он смешивает соль и пароль для вас, поэтому вам не нужно придумывать, как это сделать самостоятельно.

1 голос
/ 04 декабря 2010

Используйте bcrypt. Нет, на самом деле, отбросьте любые ваши идеи по созданию собственного метода, и используйте bcrypt . В мире уже есть достаточно небезопасных схем хеширования паролей.

Хранение хешей с солеными паролями, конечно же, с солями для каждого пользователя - это хорошо. Но засолка только предотвращает атаки радужного стола, но не предотвращает грубые атаки. Как это ни парадоксально, вы не хотите использовать быстрый метод для генерации или проверки хэшей паролей. MD5, SHA, что угодно - они все быстрые. Повторяйте за мной: используйте bcrypt.

0 голосов
/ 06 декабря 2011

Вы можете использовать алгоритм RSA: http://www.codeproject.com/KB/security/RSACryptoPad.aspx

0 голосов
/ 04 декабря 2010

Используйте алгоритм шифрования, предоставляемый .net framework

, обычно многие приложения используют алгоритм MD5

См. Здесь

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