如何在任何win表单应用程序中加密AppConfig文件的一部分?

时间:2010-07-07 10:59:42

标签: c# encryption

我正在开发一个小型winform应用程序。这里我有一些配置设置,例如用户名和密码等等。

现在我的要求是我要加密这个特定的细节。那么有人可以告诉我如何在.NET(C#)中完成这项工作。

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

您可以使用sections of your app.config加密DPAPI provider。将您的用户名/密码对添加到appSettings部分。您的应用程序中无需更改任何其他内容。你仍然像往常一样继续阅读appsettings字符串。使用以下代码加密/解密部分配置文件。

//call: ProtectSection("appSettings","DataProtectionConfigurationProvider"); 
private void ProtectSection(string sectionName, string provider) 
{ 
    Configuration config = 
        WebConfigurationManager. 
            OpenWebConfiguration(Request.ApplicationPath); 

    ConfigurationSection section = config.GetSection(sectionName); 

    if (section != null && !section.SectionInformation.IsProtected) 
    { 
        section.SectionInformation.ProtectSection(provider); 
        config.Save(); 
    } 
} 

//call: UnProtectSection("appSettings"); 
private void UnProtectSection(string sectionName) 
{ 
    Configuration config = 
        WebConfigurationManager. 
            OpenWebConfiguration(Request.ApplicationPath); 

    ConfigurationSection section = config.GetSection(sectionName); 

    if (section != null && section.SectionInformation.IsProtected) 
    { 
        section.SectionInformation.UnprotectSection(); 
        config.Save(); 
    } 
} 

答案 2 :(得分:0)

Code Project上的

This article描述了如何加密和解密字符串。这是你打电话的课程,但提供了源代码,以便你可以看到它是如何工作的。

关于Sharper Tutorials的

This article实际上涵盖了加密连接字符串的情况。

不幸的是,这里引用的时间太长了。

答案 3 :(得分:0)

build-in support for encrypting configuration files for ASP.NET applications using Windows Data Protection API但我从未尝试过,如果这也可以应用于App.config。这样做的好处是密钥存储在操作系统控制下的密钥存储区中。

除此之外,我不知道任何其他内置解决方案,我们通常在读取加密值后自行解密。这需要在某处存储密钥 - 通常包含在代码中 - 并且远非最佳。因此,如果可能,应使用Windows集成安全性(例如,不推荐使用SQL Sever身份验证)或任何其他高级基础结构(如Kerberos)(如果可用)。