zoukankan      html  css  js  c++  java
  • 如何对web.config进行加密和解密

    http://blog.csdn.net/jf_jifei/article/details/6527390

    在WEB网站开发过程中,如果我们将数据库连接字符串封装到.DLL文件中,将会给数据库和程序的迁移带来麻烦,因为万一服务器地址或者数据库发生变更,那么我们就不得不修改源程序并重新将其编译。更好的解决方法是将数据库连接字符串写入到web.config配置文件中,可问题是将连接字符串写入到web.config文件中之后,任何人都能打开看到所连接的数据库名和密码,又会带来安全隐患,因此为了保证数据库的安全性,我们可以通过使用微软IDE自带的命令aspnet_regiis.exe将配置文件web.config中指定的标签进行加密,如果以后想查看加密后的连接字符串,我们还可以使用aspnet_regiis.exe将加密后的字符串进行解密。

    1.    加密通用语法
      加密一个特定网站的web.config文件的通用形式
      aspnet_regiis.exe -pef secion physical_directory -prov provider
      或
      aspnet_regiis.exe -pe secion -app virtual_directory -prov provider
      其中,各个参数的含义如下:

    •      section表示要加密的配置节
    •      physical_directory用于指定站点的物理路径。
    •      virtual_directory用户指定虚拟路径。
    •      provider指定加密提供程序。

        加密一个特定站点的连接字符串就是:
        aspnet_regiis.exe -pef "connectionStrings" "你的web项目路径" -prov "DataProtectionConfigurationProvider"
        其中DataProctionConfiguartionProvider是Windows数据保护API(DPAPI)提供程序,它使用Windows内置的密码学技术来加解密配置节。默认情况下,这个提供程序使用本机的密钥。

    2.    加密方法

    运行Visual Studio 2008命令提示

      加密后的结果

    [xhtml] view plain copy

    1. <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
    2. <EncryptedData>
    3. <CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo+ogiigQAAAACAAAAAAADZgAAqAAAABAAAADbDjp+bAce//lsg/so66+8AAAAAASAAACgAAAAEAAAANlF3b73Kdupv/cAf4a9nPUwAQAAoTvrHdAjNjaJFEfiG7pD6sG8GMNJKGpnd4JLchu7W9XhOuPgG4C/LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/aYri1Wmlo2zyRqSkg0hQFQbObCf7lrgWEUjsv+pEOS5OVXcgNhFipVMy5iQ8sH5fNHmGg8gu5JlZQaOqYFG8ci7MGOebcQzR67krJXRBrs26lZtAj8lzf2bK+QcSqtU7Rt4C33JbLqisPL9xhfoUl9GvGTu5VS1S1H5VtErTeYXxnL7PTIr3cNjIbDMjI48LJfoOgtymT35KUdK3J0DxB68DqPaeK5QSEC/L0+6bizStRZ7BDnOngV/XfiVJnbSNYXX5IShQAAACuGn8QGUuQ4TOzkKcc891SV/CVDQ==</CipherValue>
    4. </CipherData>
    5. </EncryptedData>
    6. lt;/connectionStrings>

    3.    解密
       解密该连接字符串也很简单
       aspnet_regiis.exe -pdf "connectionStrings" '你的web项目路径"

       解密后的结果:

    [xhtml] view plain copy

    1. <connectionStrings>
    2. <add name="Sql" connectionString="Data Source=.;Initial Catalog=MySchool;Integrated Security=True" />
    3. </connectionStrings>


    4.    后台代码读取配置文件web.config中数据库连接字符串的方法:

    [c-sharp] view plain copy

    1. using System.Configuation;  
    2. …  
    3. protected void Page_Load(object sender, EventArgs e)  
    4. {  
    5.     lblMessage.Text = ConfigurationManager.ConnectionStrings["Sql"].ToString();  
    6. }  
    7. … 

    运行效果图:

    5.    在连接字符串的加密和解密的过程中,需要注意一下几点。

    •      使用加密的连接字符串

        使用加密的连接字符串不需要编码解密,ASP.NET会自动对加密内容进行解密。

    •      加密和解密在同一台计算机上使用

        在加密过程中,使用了一个基于本机的密钥。这就意味着加密和解密必须在同一台计算机上进行,否则将不能解密。同时,在一台计算机上加密的配置,在另一台计算机上将不能正常使用。

    •      中文路径问题

        该命令对中文支持不是很好。如果站点的路径中有中文字符,也许不能正常加解密。

  • 相关阅读:
    ASP.NET AJAX入门系列(5):使用UpdatePanel控件(二)
    ASPxGridView之MasterDetail
    ASPxGridView子项动态邦定
    锐浪报表不能访问grf文件
    如何把string解析为int?[C#]
    今天你多态了吗?
    接口继承的声明问题 [C#, BCL]
    如何判断字符串是否为空串?[C#]
    尝鲜微软新桌面主题——Energy Blue
    JSON数据之使用Fastjson进行解析(一)
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/5980639.html
Copyright © 2011-2022 走看看