Нужно ли мне шифрование для пароля в этом случае?

#c# #windows #email #smtp

#c# #Windows #Адрес электронной почты #smtp

Вопрос:

Настольное приложение C # для Windows будет периодически отправлять электронную почту от клиента на myEmail@gmail.com . Пароль электронной почты (myPassword) Я использую очень явно в коде, как показано:

         SmtpClient smptp = new SmtpClient();
        smptp.Host = "smtp.gmail.com";
        smptp.Port = 587;
        smptp.DeliveryMethod = SmtpDeliveryMethod.Network;
        string myPassword = "123456789";
        System.Net.NetworkCredential nc = new NetworkCredential("myEmail@gmail.com", myPassword);
        smptp.EnableSsl = true;
        smptp.Credentials = nc;
        smptp.Send(mm);
 

Я буду предоставлять клиенту только EXE-файл или установщик, а не исходный код. Может ли myPassword быть взломан в этом случае? Если да, то как его зашифровать программно?

Комментарии:

1. исполняемые файлы .net можно декомпилировать довольно легко. Если вы распространяете exe-файл, то ожидайте, что тот, кому вы его отправили, сможет прочитать каждую строку кода внутри.

2. Это .NET. Если вы отправляете приложение, вы практически отправляете его исходный код. Декомпиляция. СЕТЕВОЙ код тривиально прост.

Ответ №1:

Да, кто-то может прочитать пароль с помощью какого-нибудь дизассемблера (например, ildasm), я думаю, что в этом сценарии мало что можно сделать, лучшая рекомендация — не хранить пароль, но для сетевых учетных данных требуется обычная текстовая строка. Вы могли бы попробовать установить / получить значение в файле конфигурации, затем вы могли бы зашифровать этот файл конфигурации.

Комментарии:

1. «, но для сетевых учетных данных требуется обычная текстовая строка». что вы имеете в виду под этим?

2. Это означает, что приведенный вами пример верен, предполагается, что присвоение значения учетных данных должно работать именно так.