C#中Web.Config加密與解密的方法

來源:互聯網
上載者:User

Web.Config,其中一部分配置如下:

複製代碼 代碼如下: <appSettings>
<add key="EricTest" value="EricTest"/>
<add key="Encrypt" value="Encrypt value"/>
<appSettings>

<connectionStrings >
<add name="EncryptConnection" connectionString="Data Source=.\SQL2000;Initial Catalog=Northwind;user id=sa;password=test"/>
<add name="SQLExpress" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=myDB;user id=sa;password=test"
providerName="System.Data.SqlClient" />
<connectionStrings>

在加密前,先做一些準備工作。

首先引用使用空間

複製代碼 代碼如下:using System.Configuration;
using System.Web.Configuration;
//將加密方式定義一下。主要是為了使用方便。

///
/// 加密方式
///
public enum EncryptType
{
DataProtectionConfigurationProvider,
RSAProtectedConfigurationProvider
}

使用DPAPI加密複製代碼 代碼如下: ///
/// 以DPAPI方式加密Config
///
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(EncryptType.DataProtectionConfigurationProvider.ToString());
configuration.Save();
}
}

加密前後的資料對比複製代碼 代碼如下: <connectionStrings >
<add name="EncryptConnection" connectionString="Data Source=.\SQL2000;Initial Catalog=Northwind;user id=sa;password=test"/>
<add name="SQLExpress" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=myDB;user id=sa;password=test"
providerName="System.Data.SqlClient" />
<connectionStrings>

複製代碼 代碼如下: <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData>
<CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAPCENeNbVhU6C+bx4E8qcPAQAAAACAAAAAAAQZgAAAAEAACAAAADiE56Y0pGCoKEpOvxMVmMYO3tMqI/2W89HUIq0LeJAegAAAAAOgAAAAAIAACAAAACYuFOjNtk1iprbV91mmP8aCIULLZvRHAPwbAvoHvtXpKACAABP0/YOt/B8IG/eLnaxrDVCXPq6l8McVOvpL0hV4507VEpJb6FyRoM9c5TI6iIF6Jz8GQfnfQiF4P27RLyvvvu/R9KpuwDsZ0IKjpe47Nt/q/qOLlQx6vhQVE8yAjJ64DrujH6wjS2XdZSC03Co4u9OG/YdJX9zkpjVMNW8cx5FFklYmIzHxWx+b1ZFtZMu0CA8lzU4slkTBFmE3JMMa4KqC6EGedDXD3z53QkBt3KISWt1lM5ulPeQ8rfR7qrzUEWQsgaGLuNTJvCDwlPJWbZVzQaOHo71/epQRPHgvmNAkK1/hRqwXr0uMF9K6HNKCr0NDLFECLHcjCC4zR6QhhWdWT8FHPm2Zg2yucekeHQsrbiWtjZqg/DdyVPLWqmEdj82T1Gm9u9xhDHuNLpOT1FXy7bGjjok9TW1MxbWIXQ7bBih0mUwmvESD8aZGdxoH0XEFyy3flY2hjwszG4Opg3Qmz1/S0x6Sbz1vJJL7rk7FTdG3PwMDFvcvKlmmDZQTkM3SqplazwrjYI4IJBnIAL/uBxwMdxO515lWS55dDkdnx5r8HtGoeCN+cw5qFW8xxRPRsQKg6Sgti1GF2KzezZ5WJegN0hqUs18XoEpzCuuALbzHqRNBswwn0/GfdadxfwdNxoTHdJ+cQC3vSLk5f02pTW9CFZWDn30AFjIpMtArNltppLvWAP1YxtKMtyzjmv7iiIOsMtHFICTJAzO7FeTc+YToifu/wddPESZQB2MlrefnUK+cBkoSzAusfhtqUWfhblv6JnEq5A/PdohEkSu0dn2pC6AeqoG/Yngb6BJzpRFxssDfIkDH6LfXdo4s5WJXJx7VQNqUo4mmTKoUcp6DGmoogZqbHODL3MbgKFQyjdvXV9+4Aa9qOlHbcKDL5tAAAAAChj0UAPAO59pmMZ7gJ67ho1Mxjg9NTuAh/lG5XI+phDRzWcNRmjv2ZrUhz8eWIgCMoIG7NviBnbmCeT4K8pXUw==CipherValue>
<CipherData>
<EncryptedData>
<connectionStrings>

對使用DPAPI加密的資料解密

複製代碼 代碼如下: ///
/// 解密DPAPI
///
private void DecryptWebConfigByDPAPI()
{
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.UnprotectSection();
configuration.Save();
}
}

調用DPAPI加密資料(無需解密)複製代碼 代碼如下: ///
/// 取得加密後的資料
///
private void GetEncryptWebConfigByDPAPI()
{
string cncryptConnection = WebConfigurationManager.ConnectionStrings["EncryptConnection"].ConnectionString;
string sqlExpressConnection = WebConfigurationManager.ConnectionStrings["SQLExpress"].ConnectionString;
}

使用RSA加密複製代碼 代碼如下: ///
/// 以RSA方式加密Config
///
private void EncryptWebConfigByRsa()
{
Configuration configuration = null;
ConfigurationSection connectionSection = null;

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

加密前後資料對比: 複製代碼 代碼如下: <appSettings>
<add key="EricTest" value="EricTest"/>
<add key="Encrypt" value="Encrypt value"/>
<appSettings>

複製代碼 代碼如下: <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 <KeyKeyName>
<KeyInfo>
<CipherData>
<CipherValue>CJIkulw6qBtLeY5MJ9bs1ROpF1l3f4ulRzKnd6ZXN6XyG9O+b6Hr52ijK1AL9/+nsBseAPfdKDGaX/SKlJYwgzHhhi9sBrDBJ10dJcSnuGuWpI5zSLc+QHdpV0Z4iJTw83jmRDb9eFCX7aG60qWl52ofeqlI/ps1HsOjlKPSv8M=CipherValue>
<CipherData>
<EncryptedKey>
<KeyInfo>
<CipherData>
<CipherValue>y1aEM/BRwcwZXWeuLe9mbakU8AuI7CpElrjoJgQEfzaoZXq7uEJspQAxJyDIYmCF4EgjKhE7pY6WBRAjRaBBODxxEQHGJ8I1+T554H8zosZ2InO43h5X0ZjCmvAWxNbEq1rP9DnuTcHEYqrw70nNShf79W6e2fmUF1DoVpwYNWMLeHJCP7ZkZg==CipherValue>
<CipherData>
<EncryptedData>
<appSettings>

解密RSA加密資料

複製代碼 代碼如下: ///
/// 解密Rsa
///
private void DecryptWebConfigByRsa()
{
Configuration configuration = null;
ConfigurationSection connectionSection = null;

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

調用使用RSA加密資料(無需解密)

複製代碼 代碼如下: ///
/// 取得加密後的資料
///
private void GetEncryptWebConfigByRsa()
{
string cncryptConnection = WebConfigurationManager.AppSettings["EricTest"];
string sqlExpressConnection = WebConfigurationManager.AppSettings["Encrypt"];
}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.