Хотя вы можете кодировать base64 или даже полностью шифровать данные конфигурации (с помощью SHA1 или MD5), как уже предлагалось, я думаю, что хорошей практикой будет работа с классами инфраструктуры, работающими с данными конфигурации (Configuration
* 1003). * под System.Configuration
пространством имен) и имеет встроенную возможность шифрования данных (с помощью метода ProtectSection
класса ConfigurationSection
).
Прежде всего вы должны объявить и инициализировать экземпляр:
using System.Configuration;
...
static void Main(string[] args)
{
Configuration config;
config = ConfigurationManager.OpenExeConfiguration(/*path to config file*/); //Use ConfigurationManager.OpenMachineConfiguration(/*path to config file*/) when opening machine configuration
...
После этого вам нужно определить пользовательский раздел конфигурации, который определяет вашу конфигурацию ( msdn пример )
Как только вы это сделаете, вам просто нужно инициализировать экземпляр вашего пользовательского раздела конфигурации и добавить его в файл конфигурации, используя этот код:
isTicked = config.Sections.Add("isTicked", customSection);
Для шифрования раздела, который вы только что добавили, используйте этот код (дополнительные примеры в VB.NET и C # найдены здесь ):
config.Sections["isTicked"].SectionInformation.ProtectSection("protection provider");
«DPAPIProtectedConfigurationProvider» и «RSAProtectedConfigurationProvider» встроены по умолчанию.
Если вы хотите расшифровать раздел, используйте этот код:
config.Sections["isTicked"].SectionInformation.UnprotectSection();
Чтобы подчеркнуть точку - шифрование и дешифрование вступают в силу только после сохранения файла конфигурации
Чтобы сохранить файл, используйте код:
config.Save(); //config.SaveAs("string") is also available
Дополнительную информацию о соответствующих классах и методах можно найти в msdn, начиная со страницы класса Configuration
, указанной выше.