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会自动对加密内容进行解密。

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

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

    •      中文路径问题

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

  • 相关阅读:
    Martix工作室考核题 —— 打印一个菱形
    Martix工作室考核题 —— 打印一个菱形
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第一题
    fiddler模拟发送post请求
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/5980639.html
Copyright © 2011-2022 走看看