2009-05-04 5 views
0

У меня есть клиентское приложение, которому необходимо сохранить имя пользователя/пароль для SMTP-сервера. Эти данные войдут в SQL Server 2005 и будут использоваться моим серверным приложением. Серверное приложение будет использовать пространство имен System.Net.Mail для отправки сообщений электронной почты с использованием предоставленных учетных данных (и с адреса электронной почты этого пользователя). Как я могу шифровать/дешифровать пароль легко/надежно, чтобы у меня не было паролей с открытым текстом, пролетающих через провод? Обратите внимание, что клиентские и серверные приложения НЕ гарантированно находятся на одном компьютере.Шифрование/дешифрование пароля SMTP в приложении Client/Server

ответ

1

Существует полное пространство имен шифрования в .NET - System.Security.Cryptography (example) Таким образом, вы можете шифровать/дешифровать данные на клиенте.

Теперь как хранить ключ от шифрования. Это можно сохранить в app.config зашифрованном, как описано here. Обратите внимание, что если пользователь имеет доступ администратора к машине, они могут расшифровать ключи, хранящиеся в вашем app.config.

+0

Вы, кажется, предлагаете использовать управляемый интерфейс .Net для DPAPI для защиты ключа, который защищает данные. Почему бы просто не использовать DPAPI напрямую для защиты данных (т. Е. System.Security.Cryptography.ProtectedData). У вас есть только один ключ, который разблокирует данные, а не ключ, который разблокирует ключ, который, наконец, разблокирует данные. – chyne

+0

Я думал, что пароли должны быть зашифрованы в базе данных и распространены среди клиентов. То есть ключ к данным базы данных должен быть разделен ... – Rashack

Смежные вопросы