隐藏重要数据

时间:2012-04-22 16:24:11

标签: c#

只想问一下在.Net桌面应用程序中隐藏敏感数据(ftp帐户,数据库连接字符串等)的最佳方法..任何建议请... :)

我知道将数据放入应用程序中并记住,如果应用程序将被反混淆或反编译,隐藏数据将会暴露。

我尝试使用应用程序设置

Properties.Settings.Default.MyConnectionString = theConString;

但反编译后数据仍可以显示。

请提出任何建议。

1 个答案:

答案 0 :(得分:5)

您可以加密全部或部分app.config文件。这在保护数据库连接字符串时尤为常见。

这是关于如何做到这一点的detailed article。简而言之,这里是用于加密app.config中的连接字符串部分的代码:

static void ToggleConfigEncryption(string exeConfigName)
{
    // Takes the executable file name without the
    // .config extension.
    try
    {
        // Open the configuration file and retrieve 
        // the connectionStrings section.
        Configuration config = ConfigurationManager.
            OpenExeConfiguration(exeConfigName);

        ConnectionStringsSection section =
            config.GetSection("connectionStrings")
            as ConnectionStringsSection;

        if (section.SectionInformation.IsProtected)
        {
            // Remove encryption.
            section.SectionInformation.UnprotectSection();
        }
        else
        {
            // Encrypt the section.
            section.SectionInformation.ProtectSection(
                "DataProtectionConfigurationProvider");
        }
        // Save the current configuration.
        config.Save();

        Console.WriteLine("Protected={0}",
            section.SectionInformation.IsProtected);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}