加密app.config文件

Eat*_*ton 21 c#

我有一个app.config文件,我需要与我的应用程序一起分发.它是由于我添加的ASMX Web服务的服务引用而创建的.

如果修改/查看此文件并不是一件大事,但我仍然希望使其安全.我已经检查了配置的哈希,并确保它是有效的,但我仍然想要一个额外的保护层.

这是我的配置:http://pastie.org/private/zjdzadnfwrjvwkmlbdsqw

那么我有什么可以加密的东西吗?

mar*_*c_s 41

您无法加密整个<system.serviceModel>- 它是一个配置节组,其中包含配置节.

aspnet_regiis只会加密配置部分 - 所以你需要有选择地加密你需要的那些部分,如下所示:

cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
aspnet_regiis.exe -pef "system.serviceModel/bindings" .
aspnet_regiis.exe -pef "system.serviceModel/services" .
Run Code Online (Sandbox Code Playgroud)

等等

有了这个,您可以轻松加密您需要的东西 - 不太重要的东西,可以保留明文.

警告:因为它是aspnet_regiis,它希望处理web.config文件 - 将您复制app.config到一个位置并调用它web.config,加密您的部分,并将这些加密的部分复制回您自己的部分app.config.

或者编写自己的配置部分encrypter/decrypter - 它只是几行代码!或者使用我的 - 我写了一个小ConfigSectionCrypt实用程序,从我的OneDrive中取出它- 使用完整源代码(C# - .NET 3.5 - Visual Studio 2008).它允许您从任何配置文件加密和解密部分 - 只需在命令行中指定文件名即可.

  • +1用于定位问题的确切需要 (7认同)

小智 5

您必须在项目中设置对 System.Configuration.dll 的引用才能运行代码。

ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap();
                configFileMap.ExeConfigFilename = exeConfigName;
                System.Configuration.Configuration myConfig = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);

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

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

                myConfig.Save();
Run Code Online (Sandbox Code Playgroud)