开启.Net Framework附加的SDK命令提示符。
  加密指令:
  aspnet_regiis -pe “connectionStrings” -app “/encrypttest”
  -pe开关用于特定web.config中必须加密的节(Web.Config文档中的connectionStrings配备节)。
  -app开关用于特定IIS里边的虚拟目录,假如为网站根目录网址,为”/”.
  破译指令:
  aspnet_regiis -pd “connectionStrings” -app “/encrypttest”
  唯一的区别便是,大家用-pd开关替代了-pe开关。
  1、加密EncryptWebConfig.bat
  @echo off
  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef “connectionStrings” “D:\Program Files\Microsoft.NET\ Pet Shop 4.0Web”
  PAUSE
  2、破译DecryptWebConfig.bat
  @echo off
  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf “connectionStrings” “D:\Program Files\Microsoft.NET\ Pet Shop 4.0Web”
  PAUSE
  解决方案是:
  进dos运作:
  aspnet_regiis -pa “NetFrameworkConfigurationKey” “NT AUTHORITY\NETWORK SERVICE”
  假如运作错误,必须把文件目录 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 放进环境变量path中。
  这时就可以取得成功浏览网址了。
  一样能够 根据cmd来完成“RSAProtectedConfigurationProvider”加密
  如今把寻找文档附在下面:
  大家假如想对web.config的连接数据库字符串数组开展加密得话,那麼这儿出示了2个方式。
  方式一、
  应用“DataProtectionConfigurationProvider”方式加密,建立tmdsb.aspx文档,编码以下:
  必须加上引入
  using System.Web.Configuration;
  using System.IO;
  //加密
  protected void Button1_Click(object sender, EventArgs e)
  {
  Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
  ConfigurationSection section = config.GetSection(“connectionStrings”);
  if (section != null && !section.SectionInformation.IsProtected)
  {
  section.SectionInformation.ProtectSection(“DataProtectionConfigurationProvider”);
  config.Save();
  }
  }
  //破译
  protected void Button2_Click(object sender, EventArgs e)
  {
  Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
  ConfigurationSection section = config.GetSection(“connectionStrings”);
  if (section != null && section.SectionInformation.IsProtected)
  {
  section.SectionInformation.UnprotectSection();
  config.Save();
  }
  }
  小结:此方式很便捷,而且非常简单,但安全系数沒有密匙加密高。
  方式二、
  应用“RSAProtectedConfigurationProvider”方式来加密
  test.aspx体系文件基础如上,
  把
  section.SectionInformation.ProtectSection(“DataProtectionConfigurationProvider”);
  改为
  section.SectionInformation.ProtectSection(“RSAProtectedConfigurationProvider”);
  但这个时候你浏览网址的情况下很有可能会出現
  表明:
  在解决向该要求出示服务项目需要的环境变量时错误。请查验下边的特殊不正确详细资料并适度地改动环境变量。
  解析器错误报告: 无法应用出示程序流程“RsaProtectedConfigurationProvider”开展破译。
  出示程序流程回到错误报告为: 无法打开 RSA 密匙器皿。
  那样的不正确,解决方案是:
  进dos运作:aspnet_regiis -pa “NetFrameworkConfigurationKey”
  “NT AUTHORITY\NETWORK SERVICE”
  假如运作错误,必须把文件目录 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
  放进环境变量path中。这时就可以取得成功浏览网址了。
  一样能够 根据cmd来完成“RSAProtectedConfigurationProvider”加密
  留意:你也可以不运作 aspnet_regiis -pa “NetFrameworkConfigurationKey”
  “NT AUTHORITY\NETWORK SERVICE”指令来申请注册默认设置的
  RsaProtectedConfigurationProvider 的RSA 密匙器皿
  方式以下:
  1)建立一个可导出来的rsa密匙器皿,取名为Key
  aspnet_regiis -pc “Key” -exp
  2)在你需要加密的信息内容前边特定密匙器皿,如:
  <configProtectedData>
  <providers>
  <clear />
  <add name=”KeyProvider”
  type=”System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL”
  keyContainerName=”Key”
  useMachineContainer=”true”/>
  </providers>
  </configProtectedData>
  <connectionStrings>
  <add name=”SQLConnString” connectionString=”Data Source=yourIP;Initial Catalog=test;User Id=yourID;Password=yourPassword;”
  providerName=”System.Data.SqlClient” />
  </connectionStrings>
  而且保证在configuration节的xmlns特性有以下值:
  3)对环境变量开展加密
  aspnet_regiis -pef “connectionStrings” “E:\project\Test” -prov “KeyProvider”
  主要参数各自为:必须加密的配备节、新项目所属文件目录的物理学途径、加密所应用的密匙器皿名字
  再看web.config文件,便会发觉connectionStrings节早已被加密了,但
  是运作程序流程会发觉程序流程依然能够 恰当浏览数据查询
  这时,只需运作:
  aspnet_regiis -pdf “connectionStrings” “E:\project\Test”
  就可以对web.config文件开展破译。
  (留意,假如還是有不正确,那可能是您沒有给转化成的密匙文档充足的管理权限,
  去到C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
  文件目录下,寻找刚转化成的密匙文档,把network service客户的载入管理权限授予给它,就可以了,
  立即用指令得话还可以:指令以下 aspnet_regiis -pa “Key” “NT AUTHORITY\NETWORK SERVICE” ,
  很有可能必须再次启动iis
  4)把密匙器皿导出来为xml文件
  aspnet_regiis -px “Key” “e:\Key.xml”
  这一指令只导出来公匙,因而之后只有用以加密,而没法破译。
  aspnet_regiis -px “Key” “e:\Keys.xml” -pri
  这一则连公钥一起导出来了,因此 我们要用这一。
  5)把密匙器皿删掉
  aspnet_regiis -pz “Key”
  删掉后再运行程序流程,会提醒错误:
  解析器错误报告: 无法应用出示程序流程“KeyProvider”开展破译。
  出示程序流程回到错误报告为: 无法打开 RSA 密匙器皿。
  同样能够 证实,在一切一台未安裝恰当的密匙器皿Key的设备上,
  程序流程都没法对connectionStrings节开展破译,因而也就没法一切正常运作。
  6)导进key.xml文件
  aspnet_regiis -pi “Key” “e:\Keys.xml”
  这时,再运行程序流程会发觉又可以破译了。证实加密与破译体制运作一切正常。
  最终说一下这一体制所出示的安全系数确保能够 应用在什么层面:
  对winform程序流程的app.config开展加密现实意义并不算太大,由于不管怎样,
  远程服务器都能够根据运作aspnet_regiis -pdf 来对环境变量开展破译,进而曝露比较敏感信息内容。
  针对web.config开展加密的实际意义也仅限,当web.config文件一不小心泄漏时,
  不容易另外泄漏比较敏感信息内容,假如故意网络攻击早已获得了在网络服务器上运作程序流程的管理权限,
  那麼同app.config一样,能够 非常容易根据根据运作aspnet_regiis -pdf 获得密文了。
  也有,根据aspnet_regiis -pa “Key” “NT AUTHORITY\NETWORK SERVICE”
  操纵对不一样客户对密匙器皿的访问限制,应当还能够进一步获得一些安全系数,
  例如能够 操纵一些客户即便登陆到网络服务器上,也没法用aspnet_regiis -pdf对环境变量开展破译。