В предыдущем посте о я показал насколько легко можно создать собственную секцию в конфигурационном файле. Теперь я расскажу, как зашифровать любую секцию в конфиге, сделав это прозрачно для пользователя. С этим нам поможет встроенный в Windows DPAPI. DPAPI не требует пароля для шифрования и расшифровки, для этого используется встроенный в систему ключ привязанный к пользователю или машине. Когда технология только появилась, повсеместно практиковалось специальное консольное приложение aspnet_regiis, которое распространялось с ASP.NET. Но на деле этот подход работает для любого конфига и оказался проще:
Вот собственно метод шифрования:
private static void EncryptConfigSection(string sectionKey)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSection section = config.GetSection(sectionKey);
if (section != null)
{
if (!section.SectionInformation.IsProtected)
{
if (!section.ElementInformation.IsLocked)
{
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
}
}
}
}
Вызвать его можно в начале выполнения программы.Чтобы зашифровать параметры соединения к базе данных, вызов метода делается так:
EncryptConfigSection("connectionStrings");
Метки:C#, разработка
Похожие статьи
- 23 сентября 2011 -- Конфигурационные секции. Web.config и App.config для «C# продолжающих». (0)
- 12 января 2012 -- Генерация строк перебором букв. (4)
- 15 сентября 2011 -- Еще раз о работе со службами (Windows Service) на C# (0)
- 30 июля 2010 -- DLR 1.0 на примере IronPython 2.6 (0)
- 25 сентября 2011 -- Трансформации. Web.config и App.config для «C# продолжающих». (2)


18 января, 2014 at 5:02
Всё понятно и предельно конкретно. Спасибо за пример кода!