.net加密web.config檔案

tandongmu發表於2018-05-30

這篇文章我將介紹如何利用ASP.NET來加密和解密Web.config中連線字串,之前只寫了第二種方式,現在將兩種方式都寫出來,供大家參考。不管使用哪種方式我們在程式中都不需要寫任何程式碼來解密連線字串,因為.NET會自動的為我們解密。如果我們要用連線字串,可以像平常那樣呼叫。

例如:string strconnection = ConfigurationManager.AppSettings[“connection”].ToString();

第一種方式:

通過在命令列中工具執行aspnet_regiis.exe -pef命令,可以對web.config中的連線串進行加密和解密。

1、在命令視窗中,輸入命令 aspnet_regiis.exe -pef “connectionStrings” “C:VisualStudio2008Authorization”

注:-pef表明程式是以檔案系統的形式建立的。第二個“connectionStrings”是你要加密的configuration 節點名字。    第三個引數指名 web.config的物理路徑。

2、成功執行命令後會顯示:加密成功如果我們想解密,只需要在命令視窗中,輸入aspnet_regiis.exe -pdf “connectionStrings” “C:VisualStudio2008Authorization”成功執行後,會顯示解密成功。此時就可以對連線字串進行修改。

第二種方式:

使用RSAProtectedConfigurationProvider和DataProtectionConfgurationProvider來加密解密web.config

下面的加密程式碼使用的是“DataProtectionConfgurationProvider”進行加密的,如需使用“RSAProtectedConfigurationProvider”進行加密,只需要將程式碼中的“DataProtectionConfgurationProvider”替換成“RSAProtectedConfigurationProvider”即可。

 

    /// <summary>
    /// 加密指定區塊
    /// </summary>
    private void EncryptWebConfigByDPAPI()
    {
        Configuration configuration = null;
        ConfigurationSection connectionSection = null;

        //開啟Request所在路徑網站的Web.config檔案
        configuration = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
        //取得Web.config中connectionStrings設定區塊
        connectionSection = configuration.GetSection("connectionStrings");
        //未加密時
        if (!connectionSection.SectionInformation.IsProtected)
        {
            connectionSection.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
            configuration.Save();
        }
    }

    /// <summary>
    /// 解密指定區塊
    /// </summary>
    private void EncryptWebConfig()
    {
        Configuration configuration = null;
        ConfigurationSection connectionSection = null;
        //開啟Request所在路徑網站的Web.config檔案
        configuration = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
        //取得Web.config中connectionStrings設定區塊
        connectionSection = configuration.GetSection("connectionStrings");

        if (connectionSection != null && connectionSection.SectionInformation.IsProtected)
        {
            connectionSection.SectionInformation.UnprotectSection();
            configuration.Save();
        }
    }

 

相關文章