如何加密或隐藏配置文件c#

Posted

技术标签:

【中文标题】如何加密或隐藏配置文件c#【英文标题】:How to encrypt or hide config file c# 【发布时间】:2021-12-03 12:33:21 【问题描述】:

这是我想加密或隐藏密码值的 MyConfig 文件代码,但我不知道该怎么做。 我已经使用了安全应用配置,但它给了我一个错误或者我做错了什么?

默认密码为 Data#Dat

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="MYdata.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <connectionStrings>
        <add name="MYdata.Properties.Settings.Database1ConnectionString"
            connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
    </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="DocumentFormat.OpenXml" publicKeyToken="8fb06cb64d019a17" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.13.1.0" newVersion="2.13.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="ExcelNumberFormat" publicKeyToken="23c6f5d73be07eca" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <userSettings>
    <MYdata.Properties.Settings>
      <setting name="FullName" serializeAs="String">
        <value />
      </setting>
      <setting name="Email" serializeAs="String">
        <value />
      </setting>
      <setting name="Description" serializeAs="String">
        <value />
      </setting>
      <setting name="Password" serializeAs="String">
        <value>Data#Data//</value>
      </setting>
    </MYdata.Properties.Settings>
  </userSettings>
</configuration>

【问题讨论】:

尽管这似乎是个好主意,但加密该文件中的密码并不会增加任何安全性(因为解密它的程序就在它旁边) 这是否意味着我无法加密或隐藏这些配置文件? 您的应用程序应该以某种方式读取配置,因此应用程序需要执行此操作所需的所有信息。您可以在启动期间提供信息(例如,向启动应用程序的操作员请求密码),因此除非有人提供“config-opener”密码,否则无法使用应用程序和配置文件本身。但这意味着每一次创业都是一个互动的过程,这可能还可以,但大多不是。 否则您可以在应用程序可以访问它的地方(在执行计算机上或应用程序本身内部)隐藏解密密码,这可以提供一些“保密”,但任何有权访问应用程序的人都可以反汇编它并找出您的方法并自行使用此解密方法。这取决于您用户的技能。 【参考方案1】:

我刚刚发现它只显示默认密码,而不是用户设置的密码。这样就解决了我的问题。

也感谢@cly 告诉我信息:

您的应用程序应该以某种方式读取配置,以便应用程序 需要执行此操作所需的所有信息。您可以提供 启动期间的信息(例如,向操作员请求密码 谁启动了应用程序)所以应用程序和配置文件 除非有人给出“config-opener”,否则它本身不能使用 密码。但这意味着每一次创业都是一个互动的过程 可能没问题,但大多不是。

否则,您可以将解密密码隐藏在 应用程序可以访问它(在执行计算机或内部 应用程序本身)可以提供一些“保密性”,但任何人 有权访问该应用程序可以对其进行反汇编并找出您的 方法并自行使用此解密方法。这取决于你的 用户的技能。

【讨论】:

以上是关于如何加密或隐藏配置文件c#的主要内容,如果未能解决你的问题,请参考以下文章

隐藏或保护 .txt 保存数据 c#

C# 对 App.config的appSettings节点数据进行加密

c#加密xml文件

以编程方式加密 .NET 中的配置文件

C# 加密整个 XML 文件

Crimsonland 血腥大地 逆向无敌通关分析报告配置文件加密Dll隐藏MD5检测补丁反调试函数反反调试