[C#.Net]對WinForm應用程序的App.config的使用及加密


我們在寫C#應用程序時,在工程文件中放置一個app.config,程序打包時,系統會將該配置文件自動編譯為與程序集同名的.exe.config 文件。作用就是應用程序安裝后,只需在安裝目錄中找到該文件,需改字符串內容,就可以改變運行參數,而不用修改源程序代碼。例如:可以使用配置文件保存數據庫連接字符串;在應用程序中顯示變動的文字信息等等.因為對其使用方法的不了解,大多數人選擇了自己重建配置文件並自行管理,實際上這個文件是可以被用戶操作的。App.config文件為Xml文檔格式,可在文件中添加任意數量的字符串,應用程序在運行時可以讀取這些字符串。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="connStr" connectionString="Data Source=XXXXXXXX;Initial Catalog=dbVisitorMS;User ID=sa;Password=xxxxxxxxxxxx"
      providerName="system.Data.SqlClient" />
  </connectionStrings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

默認情況下,我們需要對App.config文件里的connectionStrings片斷進行加密處理,ASP.NET IIS 注冊工具 (Aspnet_regiis.exe)可以勝任這個工作,但這個工具只能針對ASP.NET的Web.config文件,難道我們就沒有辦法了嗎?答案當然是否定的。 

配置選項
-pdf section webApplicationDirectory 對指定物理(非虛擬)目錄中的 Web.config 文件的指定配置節進行解密。
-pef section webApplicationDirectory 對指定物理(非虛擬)目錄中的 Web.config 文件的指定配置節進行加密。
-pdf 和-pef 參數是對指定的物理目錄里的Web.config文件進行加密,我們可以先將App.config文件改名為Web.config,通過這兩個參數便可以“騙”過系統,讓它將指定的配置節進行加密,我們只需要將加密后的文件名改回App.config即可,我們來實驗一下:
第一步:先將目錄下的App.config改名為Web.config。
第二步:打開SDK命令提示,輸入命令:aspnet_regiis -pef "配置節" "目錄",以我的項目為例,加密前的config文件內容如下:

加密后

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
      xmlns="http://www.w3.org/2001/04/xmlenc#">
      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <KeyName>Rsa Key</KeyName>
          </KeyInfo>
          <CipherData>
            <CipherValue>p1KdppQmE7cW4dtA76tNFmBfvjwXP/OOJBBg1MDmietZJ+rriOFyHl0IJ61q6dQZNcB7JretgXA9+jH3gwQgZs9Cxalcjj9X6EtYJ4hhVEZq/e5pXMQ6nvcedBUjyU7J2Z8TKilzrlOPMvj+dCFwWQBEeEbUGODdL9p1Cl3c/n5Uv0Xv4lgiomocHCqEZZAvVV2If3GRsgqLV9ZRpKmHYWm9YoDJSBR5guW0+qB+c6b2JE71krXThSRgmLbgGbKV3O7LBAgbsnr6ONFTrHP1xXdnwzILxi0irEjda/kVm30Pkxw5+yi7zsq8X+aCV0sF953HmIKSJyyY9hE9tqUKmg==</CipherValue>
          </CipherData>
        </EncryptedKey>
      </KeyInfo>
      <CipherData>
        <CipherValue>RFhmXoVyP8u9lCj9KJFSyeF+o00GFXvHJYwFPmhCXcGQY6P+Us3YeY0lAfF0LNqaiOvNd7yXk7C7zEkYO0r7AsAGOLidckOznNFyxnefGXrORWQgFmoxi8rkdUtlW0aZXTg2B9xUmxe8p1GdM7gMwe8m6yc98CnyEPxsFRdC8OkChFywFSQK0AR9P9hojEMkbsRUhDd3sHz0tKrX+a581uZrzpdnyDqGyY4t/0N/TfMX+ve5jg/vaiI18iLTJbm9+bU1qaAeIpYYWKRzWULhMsejn65v5LuK</CipherValue>
      </CipherData>
    </EncryptedData>
  </connectionStrings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

由此可見,我們已經完成了任務,現在只需要將Web.config文件名改回App.config即可,在應用程序項目中無需對該文件進行解密操作,.NET框架會自動替我們完成,如果想解密該文件也很簡單,在SDK命令提示里輸入aspnet_regiis -pdf "配置節" "目錄"即可。

 

 總結:App.config使用aspnet_regiis來加密只能騙騙外行,內行使用工具解密就可以了.但是對於一般用戶足夠了,寫的再看都有反編譯軟件可以看到大概

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM