程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 加密配置文件(App.Config和Web.config)中connectionStrings通用方法,connectionstrings

加密配置文件(App.Config和Web.config)中connectionStrings通用方法,connectionstrings

編輯:C#入門知識

加密配置文件(App.Config和Web.config)中connectionStrings通用方法,connectionstrings


    1、 背景:根據項目的要求,需要對配置文件配置的數據庫連接字符串進行加密,也就是對ConnectinString節點的內容進行加密存儲,同時考慮到代碼使用連接字符串不需要進行更改,C#會自動對加密的內容進行解密。

    2、需求:因此考慮單獨開發一個winform程序,對配置文件進行加密和解密,通過ConfigurationManager中的OpenMappedExeConfiguration方法創建一個Configuration對象,然後在對這個對象中的指定節點進行操作。

     遇到的問題:

  

ConfigurationManager.OpenExeConfiguration("C:\Charles2008.config");     

這個方法在當前的目錄下產生一個副本("C:\Charles2008.config.config"),而且返回的Configuration對象操作的不是Charles2008.config文件,而是程序自動創建的Charles2008.config.config文件,然而如果我把文件Charles2008.config更名為Charles2008.config.config文件或者刪除Charles2008.config文件卻提示:

 

加載配置文件時出錯: 參數“exePath”無效。
參數名: exePath

    3、解決方法:從網上尋找幫助,發現還真的有和我遇到一模一樣的問題,只需要在以上的代碼進行稍微一點改動即可,改動後不生成文件副本,直接操作文件,更新也是操作此文件。

   //先實例化一個ExeConfigurationFileMap對象,把物理地址賦值到它的 ExeConfigFilename 屬性中; 
            ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); 
            fileMap.ExeConfigFilename = @"C:\Charles2008.config"; 
  
            //再調用fileMap 實例化 config , 這樣,操作的文件就是Charles2008.config文件了,也不會產生副本文件 
            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 

    4、加密連接字符串:上面技術難點解決後,根據獲取到Configuration對象Config調用以下方法即可對連接字符串進行加密。(僅針對ConectionString節點)

     

   ConfigurationSection connectionSection = config.GetSection("connectionStrings");
                if (connectionSection != null)
                {
                    connectionSection.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
                    config.Save();
                    MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

   5、 備注

    加密和解密在同一台計算機上使用,在加密過程中,使用了一個基於本機的密鑰。這就意味著加密和解密必須在同一台計算機上進行,否則將不能解密。同時,在一台計算機上加密的配置,在另一台計算機上將不能正常使用。

     連接字符串加密工具

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved