最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#為配置文件加密的實現(xiàn)方法

 更新時間:2014年10月22日 10:24:19   投稿:shichen2014  
這篇文章主要介紹了C#為配置文件加密的實現(xiàn)方法,可實現(xiàn)對配置文件中的敏感信息進(jìn)行加密,非常具有實用價值,需要的朋友可以參考下

本文實例講述了C#為配置文件加密的實現(xiàn)方法,分享給大家供大家參考。具體實現(xiàn)方法如下:

一般來說,在web.config或app.config文件里我們經(jīng)常會存儲一些敏感信息,比如connectionStrings或者appSettings,比如像下面的文件。

復(fù)制代碼 代碼如下:
<?xml version="1.0"?>
<configuration>
    <system.web>
      <compilation debug="true" targetFramework="4.0" />
    </system.web>
    <connectionStrings>
      <add name="MyNwConnectionString" connectionString="Server=myServerAddress;Database=myDataBase;User Id=myUsername; Password=myPassword;"/>
    </connectionStrings>
    <appSettings>
      <add key="User" value="myUsername"/>
      <add key="Password" value="myPassword"/>
    </appSettings>
</configuration>

復(fù)制代碼 代碼如下:
using System;
using System.Configuration;

namespace WebConfigEncryptTest
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string user = ConfigurationManager.AppSettings.Get("User");
            string password = ConfigurationManager.AppSettings.Get("Password");
            string connectionString = ConfigurationManager.ConnectionStrings["MyNwConnectionString"].ConnectionString;
        }
    }
}

一、加密文件可以使用的Provider

.NET為我們提供了一個工具aspnet_regiis.exe來對web.config文件中的敏感信息進(jìn)行加密(app.config文件可以先改名為web.config,加密后再改回app.config)。你可以使用兩個provider中的一個來進(jìn)行加密:

System.Configuration.DPAPIProtectedConfigurationProvider:在System.Configuration.dll中,使用Windows DPAPI(Data Protection API)來進(jìn)行加密,密鑰存在Windows Local Security Authority(LSA)中。

注意:當(dāng)使用DPAPIProtectedConfigurationProvider時,加密文件所使用的帳號需要與運行web application的帳號相同,否則web application無法解密加密的內(nèi)容。
System.Configuration.RSAProtectedConfigurationProvider:在System.Configuration.dll中,使用RSA算法來進(jìn)行加密(RSA算法是非對稱加密,具體可參見前面一篇文章C#對稱加密與非對稱加密),公鑰存放在config文件當(dāng)中,只有加密的計算機有密鑰。RSAProtectedConfigurationProvider通常是默認(rèn)的缺省provider。

二、加密文件的命令

加密web.config文件可以使用:

復(fù)制代碼 代碼如下:
aspnet_regiis -pef section web-app-physical-dir

Encrypt the configuration section. Optional arguments:

[-prov provider] Use this provider to encrypt.

比如運行下面的命令就會分別對connectionStrings和appSettings中的信息進(jìn)行加密:

復(fù)制代碼 代碼如下:
aspnet_regiis.exe -pef "connectionStrings" "C:\myweb\HelloService"

aspnet_regiis.exe -pef "appSettings" "C:\myweb\HelloService"

加密后的web.config文件變成:

復(fù)制代碼 代碼如下:
<?xml version="1.0"?>
<configuration>
    <system.web>
      <compilation targetFramework="4.0" />
    </system.web>
    <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>E2fO9C0TJVxImLYQZza+fCQdDbTpNh/kOKLRsK6zcFjkgtUCl6SnMViuu/2G1NVTxqXyEWYwyK6AiCZA+feeG/AvYvmEEVopVDb0YyGeuJgEI1r8HxTl8Cv+f2EIimP7LJI+JRZVerI4MU6Ke3wxm2S/ATc73/W6eg9808f4/D6J0pp3wND4E79gBiAnBHFYQIefdJYUsmHR9z9LiIqjCllkkj/JB0kso0kGJ9i+iew1Jae5jugIN8gPxsXbCfmw6ru3I3Kbpa8Z5AllfkFA2YKrsuV3c7eLLJ0kB4lsIJIUTy3kRyA4GjdChOmlNwwffIbhwUPPxa25CiF0VAq27Q==</CipherValue>
                    </CipherData>
                </EncryptedKey>
            </KeyInfo>
            <CipherData>
                <CipherValue>I1DWG11Iz/rq+NC9C/21B3Q22J9+IexHPH6kkWvQPeHUO6OvOWeQbk3wHALR2ql8pz0gQJFyfTypMk/xSSikFI2Dcy5mgYY3kP73bQQ83ho3O1HPw9TsRtK1G8gmVNGyQLj7iTRcoGfiYYmSibPynv1MzSV1qDXlnVfKiMqKRZ5ZPiMSMc5u3dDEL/JW1oCvAGs5tHrZU5+vgvm0yCmSuCWZbXva+iv9J35EQqs58pq+hwVo1hg1dffdupGCBykaXGl5VX3TIGc=</CipherValue>
            </CipherData>
        </EncryptedData>
    </connectionStrings>
    <appSettings 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>WVoFIs8rSEgqKw1C0QCmePs7WK6EIoGCfdx9CTJNmABoVvoEWPnOEQwz/6Ruu0rGwa7q91KuhGILmy4NEN0padnX6FScCdEzP6CS59U3IFumYmTrD7D9ihqFO2aIL/SuBvV3D2kxhHaYGFaPuvYgsyOLf3+aYR3O/uh/k5wZxLoIeKUUrT762J3bdaK6cJWQeuOu4j2vDXEdawdwhlnK12UV8+/AXZNlFW1N3Z0RUVFX1nMSwTaIu8F3tZ9hCFbGwbTm2T0XnfDOcB6dCxCutqC8pXD36laAfiSANzAWoC+Yhf5eFSj24fX0NU6UTQB8fqLyOgWsIMLxZLKVrwnlmg==</CipherValue>
                    </CipherData>
                </EncryptedKey>
            </KeyInfo>
            <CipherData>
                <CipherValue>5W2KhG/oETLUDptobcOM52x1qD/g9A0By/wcGXI+fm7EdcD8mT3TxsLVBVcHRBCyUO7OIHl8NyCrduRSYwyd8ggBCriQ5KrbAmW4LXrNnw/JjjCEJWPuRcRucVRfpgap2nHh6BXRXC/AU6v0GcRqy7LV8179PgGtyAa8IE1mV/w=</CipherValue>
            </CipherData>
        </EncryptedData>
    </appSettings>
</configuration>

其中RSAProtectedConfigurationProvider是默認(rèn)的缺省provider,如果想使用DPAPIProtectedConfigurationProvider,可以用-prov參數(shù)指明:

aspnet_regiis.exe -pef "connectionStrings" "C:\myweb\HelloService" -prov "DataProtectionConfigurationProvider"

aspnet_regiis.exe -pef "appSettings" "C:\myweb\HelloService" -prov "DataProtectionConfigurationProvider"

加密配置文件后,源程序不需要做任何改動。如果要修改或添加新的配置信息,需要先解密配置文件。不論使用哪種Provider,都只能在進(jìn)行加密的計算機上對配置文件進(jìn)行解密。

三、解密文件的命令

解密的命令如下(解密命令不需要-prov參數(shù)):

復(fù)制代碼 代碼如下:
-pdf section web-app-physical-dir

Decrypt the configuration section.

aspnet_regiis.exe -pdf "connectionStrings" "C:\myweb\HelloService"

aspnet_regiis.exe -pdf "appSettings" "C:\myweb\HelloService"

四、總結(jié)

配置文件中經(jīng)常會有用戶名密碼的敏感信息,為了防止該信息泄露,需要對配置文件進(jìn)行加密。加密與解密可以使用.NET提供的工具aspnet_regiis.exe,可以在Windows .NET的文件夾中找到它。

該工具只對web.config文件進(jìn)行修改,如果要加密或解密app.config,可以先將app.config文件改名為web.config,加密或解密后再改回來。

希望本文所述對大家的C#程序設(shè)計有所幫助。

相關(guān)文章

  • C#實現(xiàn)鬧鐘AlarmClock實例代碼

    C#實現(xiàn)鬧鐘AlarmClock實例代碼

    這篇文章主要介紹了C#實現(xiàn)鬧鐘AlarmClock實例代碼,很實用的功能,需要的朋友可以參考下
    2014-08-08
  • C#日期格式字符串的相互轉(zhuǎn)換操作實例分析

    C#日期格式字符串的相互轉(zhuǎn)換操作實例分析

    這篇文章主要介紹了C#日期格式字符串的相互轉(zhuǎn)換操作,結(jié)合實例形式分析了C#日期格式字符串的相互轉(zhuǎn)換操作函數(shù)與相關(guān)使用技巧,需要的朋友可以參考下
    2019-08-08
  • c#利用webmail郵件系統(tǒng)發(fā)送郵件示例分享

    c#利用webmail郵件系統(tǒng)發(fā)送郵件示例分享

    在C#中發(fā)送郵件的方式有2種,一種是使用webmail方式進(jìn)行發(fā)送,另外一種就是采用netmail發(fā)送的方式,這篇文章介紹了c#使用webmail方式發(fā)送郵件示例,大家參考使用吧
    2014-01-01
  • C#?獲取文件夾里所有文件名的詳細(xì)代碼

    C#?獲取文件夾里所有文件名的詳細(xì)代碼

    這篇文章主要介紹了C#?獲取文件夾里所有文件名,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • 在C#中對TCP客戶端的狀態(tài)封裝詳解

    在C#中對TCP客戶端的狀態(tài)封裝詳解

    本篇文章小編為大家介紹,在C#中對TCP客戶端的狀態(tài)封裝詳解,需要的朋友參考下
    2013-04-04
  • C#動態(tài)生成DropDownList執(zhí)行失敗原因分析

    C#動態(tài)生成DropDownList執(zhí)行失敗原因分析

    這篇文章主要介紹了C#動態(tài)生成DropDownList執(zhí)行失敗原因分析,以一個實例形式分析了C#動態(tài)生成DropDownList的相關(guān)注意要點與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • c#中查詢表達(dá)式GroupBy的使用方法

    c#中查詢表達(dá)式GroupBy的使用方法

    本篇文章介紹一下GroupBy的使用方法,包括實驗基礎(chǔ)數(shù)據(jù)用例,通過實例代碼給大家介紹的非常詳細(xì),需要的朋友跟隨小編一起看看吧
    2021-11-11
  • C#?漢明距離的算法實現(xiàn)

    C#?漢明距離的算法實現(xiàn)

    漢明距離是用來衡量兩個等長字符串之間差異的度量指標(biāo),本文主要介紹了C#?漢明距離的算法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • C#實現(xiàn)計算器功能

    C#實現(xiàn)計算器功能

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)計算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C#中使用NLog庫進(jìn)行日志記錄的流程詳解

    C#中使用NLog庫進(jìn)行日志記錄的流程詳解

    NLog 是 .NET 的日志記錄框架,具有豐富的日志路由和管理能力,極大地幫助您生成和管理日志,NLog 是一個庫,可以輕松地同時記錄和管理多個不同區(qū)域中的數(shù)據(jù),本文將給大家介紹在C#中使用 NLog 庫進(jìn)行日志記錄的教程,需要的朋友可以參考下
    2024-06-06

最新評論

雷波县| 杨浦区| 芮城县| 三明市| 休宁县| 馆陶县| 定陶县| 临沭县| 金乡县| 连城县| 剑阁县| 肇州县| 岐山县| 房产| 探索| 河北区| 陵水| 宁阳县| 北流市| 大余县| 和平县| 陕西省| 山丹县| 奎屯市| 乳山市| 皮山县| 从化市| 龙泉市| 荥阳市| 辽阳市| 遵义县| 尚志市| 乡宁县| 万盛区| 东乡县| 玉屏| 甘孜县| 齐齐哈尔市| 旺苍县| 德令哈市| 浦北县|