Шифрование/дешифрование SMTP-пароля в клиент-серверном приложении

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


person Mark Carpenter    schedule 04.05.2009    source источник


Ответы (1)


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

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

person Rashack    schedule 04.05.2009
comment
Кажется, вы предлагаете использовать управляемый интерфейс .Net для DPAPI для защиты ключа, который защищает данные. Почему бы просто не использовать DPAPI напрямую для защиты данных (например, System.Security.Cryptography.ProtectedData). Просто имейте один ключ, который разблокирует данные, а не ключ, который разблокирует ключ, который, наконец, разблокирует данные. - person chyne; 05.05.2009
comment
Я думал, что пароли должны быть зашифрованы в базе данных и переданы клиентам. т.е. ключ к данным базы данных должен быть общим... - person Rashack; 05.05.2009