Как защитить разумные пароли, хранящиеся в базе данных - PullRequest
4 голосов
/ 22 февраля 2010

Я разрабатываю веб-приложение, для которого конечные пользователи должны создать учетную запись. Эта часть очень проста: я буду хэшировать их пароли с помощью SHA-256, чтобы никто, кроме самого пользователя, не знал пароль. Теперь наступает трудная часть. После того, как пользователь создает учетную запись, он / она должен предоставить пароль своего почтового сервера. Теперь вопрос: как я могу прилично защитить этот пароль (пароль будет храниться в базе данных)? Если я зашифрую пароль с помощью TripleDES, любой разработчик или системный администратор сможет расшифровать пароль и увидеть его. Как обычно справляться с такой проблемой? Большое спасибо.

1 Ответ

10 голосов
/ 22 февраля 2010

Обычный способ сделать это - использовать симметричный ключ шифрования, полученный из пароля пользователя. Стандартный способ сделать это - использовать алгоритм, указанный в RFC2898 , который генерирует набор криптографически защищенных байтов, которые вы можете использовать в качестве ключа и IV. Вероятно, он поддерживается библиотекой для вашего языка, например .NET, которую я использую, имеет класс Rfc2898DeriveBytes .

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

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