Web.Config,其中一部分配置如下:
复制代码 代码如下:
providerName="System.Data.SqlClient" />
在加密前,先做一些准备工作。
首先引用使用空间
复制代码 代码如下:
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();
}
}
加密前后的数据对比
复制代码 代码如下:
providerName="System.Data.SqlClient" />
复制代码 代码如下:
对使用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();
}
}
加密前后数据对比:
复制代码 代码如下:
复制代码 代码如下:
解密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"];
}



