Здравствуйте, zubrik, Вы писали:
Z>Пароли будут хранится в бд SQL Server, каким образом их кодировать, и функция их проверки. Хочется мощную защиту, нужны примеры.
Обычно хранят не пароли, а их хеш. Примеры в MSDN.
... <<RSDN@Home 1.2.0 alpha 4 rev. 1090 on Windows Vista 6.0.6001.65536>>
Сами пароли в закодированном виде практически никогда не хранятся. Храняться хеши паролей (например, MD5, но можно использовать и более надежные хеши). При вводе пароля пользователем вычисляем его хеш и сравниваем с хешем, хранящимся в базе. Если хеши совпали, то считаем, что введен правильный пароль (вероятность того, что для разных паролей получится одинаковый хеш считаем ничтожно малой), если нет — то точно введен неправильный пароль.
Грубо говоря, чем больше бит, тем лучше хеш. Кстаи именно MD5 использовать уже не стоит, есть rainbow tables для обращения. Неплохой компромисс — SHA512.
Здравствуйте, zubrik, Вы писали:
Z>А есть готовые классы в .NET для работы с MD5, SHA512 к примеру, функции, чтобы можно было создать хэш и проверить пароль по хэшу?
Есть. См. наследников System.Security.Cryptography.HashAlgorithm
... <<RSDN@Home 1.2.0 alpha 4 rev. 1090 on Windows Vista 6.0.6001.65536>>
Здравствуйте, aloch, Вы писали:
A>Сами пароли в закодированном виде практически никогда не хранятся. Храняться хеши паролей (например, MD5, но можно использовать и более надежные хеши). При вводе пароля пользователем вычисляем его хеш и сравниваем с хешем, хранящимся в базе. Если хеши совпали, то считаем, что введен правильный пароль (вероятность того, что для разных паролей получится одинаковый хеш считаем ничтожно малой), если нет — то точно введен неправильный пароль.
Желательно хешировать не пароль, а, например, login+пароль. Тогда если у 2-х пользователей случайно оказался одинаковый пароль (что не редкость, у многих пароли очень простые), этого будет не видно.
Здравствуйте, aloch, Вы писали:
A>Здравствуйте, zubrik, Вы писали:
A>Сами пароли в закодированном виде практически никогда не хранятся.
Кроме тех случаев, когда необходимо хранить параметры подключения куда-нибудь. А это к сожалению отнюдь не "практически никогда" и бьёт по безопасности.
Такие случаи, конечно, бывают. Просто в исходном вопросе об этом не спрашивали. Наверное в этом случае лучшим будет использовать хеш логина+пароля пользователя в качестве ключа шифрования этих данных (как я понимаю, так поступает, например, Windows в EFS)
Здравствуйте, PaulMinelly, Вы писали:
Pzz>>Имейте ввиду, что чем хеш лучше, тем он в среднем медленней.
PM>А что при сравнении пароля — надо дикую производительность аля 1,000,000 паролей в секунду?
Зависит от задачи. Если у Вас сервер, который обрабатывает 1,000,000 логинов в секунду, тогда да, Вам надо иметь дикую производительность аля 1,000,000 паролей в секунду
Здравствуйте, Pzz, Вы писали:
Pzz>Желательно хешировать не пароль, а, например, login+пароль. Тогда если у 2-х пользователей случайно оказался одинаковый пароль (что не редкость, у многих пароли очень простые), этого будет не видно.
Лучше сгенерить случайный кусок (salt) и добавить его в пароль, а потом этот кусочек сохранить рядом с хешем.
... <<RSDN@Home 1.2.0 alpha 4 rev. 1090 on Windows Vista 6.0.6001.65536>>
Здравствуйте, Pzz, Вы писали:
Pzz>Желательно хешировать не пароль, а, например, login+пароль. Тогда если у 2-х пользователей случайно оказался одинаковый пароль (что не редкость, у многих пароли очень простые), этого будет не видно.
Здравствуйте, AndrewVK, Вы писали:
Pzz>>Желательно хешировать не пароль, а, например, login+пароль. Тогда если у 2-х пользователей случайно оказался одинаковый пароль (что не редкость, у многих пароли очень простые), этого будет не видно.
AVK>Лучше сгенерить случайный кусок (salt) и добавить его в пароль, а потом этот кусочек сохранить рядом с хешем.
Здравствуйте, Аноним, Вы писали:
Pzz>>Желательно хешировать не пароль, а, например, login+пароль. Тогда если у 2-х пользователей случайно оказался одинаковый пароль (что не редкость, у многих пароли очень простые), этого будет не видно.
А>А для чего это прятать?!
Если у Маши и Васи одинаковые пароли, и Вы знаете пароль Маши тот факт, что они одинаковые, тем самым Вы знаете и пароль Васи. А так если Маша пишет свой пароль на стенке, Васю это не затрагивает.