zoukankan      html  css  js  c++  java
  • Enterprise Library2.0中加密数据库连接字符串

    看了SHY520写的关于Data Access Application Block的文章,写得不错,忽略了一点就是如何去加密数据库连接字符串,这儿我简单的介绍一下。我们知道,在Enterprise Library1.1中加密连接字符串,需要依赖于Cryptography Application Block.NET Framework2.0中已经内置了这项功能,通过Configuration命名空间下的一些类来完成,支持两种类型的加密:

    DPAPIProtectedConfigurationProvider:使用Windows Data Protection API (DPAPI)

    RsaProtectedConfigurationProvider:使用RSA算法

    下面来看一下具体的实现方法,假设已经有这样的一个配置文件:

    <?xml version="1.0" encoding="utf-8"?>

    <configuration>

      
    <configSections>

        
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

      
    </configSections>

      
    <dataConfiguration defaultDatabase="QuickStarts" />

      
    <connectionStrings>

        
    <add name="QuickStarts" connectionString="Database=EntLibQuickStarts;Server=RJ-097;Integrated Security=SSPI;"

          providerName
    ="System.Data.SqlClient" />

      
    </connectionStrings>

    </configuration>

    1.添加对System.Configuration.dll的引用

    2.在Program.cs中引入命名空间

    using System.Configuration;

    3.编写相关的代码:

    /// <summary>

    /// Author:TerryLee

    /// From:http://terrylee.cnblogs.com

    /// </summary>


    static void EncryptConfiguration()
    {   
        
    // 使用什么类型的加密

        
    string provider = "RsaProtectedConfigurationProvider";

        Configuration config 
    = null;

        config 
    = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

        
    // 加密连接字符串

        ConfigurationSection section 
    = config.ConnectionStrings;

        
    if ((section.SectionInformation.IsProtected == false&&

            (section.ElementInformation.IsLocked 
    == false))

        
    {
          section.SectionInformation.ProtectSection(provider);

            section.SectionInformation.ForceSave 
    = true;

            config.Save(ConfigurationSaveMode.Full);

        }

    }

    该方法的调用放在程序的主程序的入口点:

    [STAThread]

    static void Main()
    {
        
    // Protect the Connection Strings

        EncryptConfiguration();

        Application.Run(
    new MainForm());

    }

    运行程序后,打开配置文件可以看到,连接字符串已经变成密文了。最后注意一点:加密的字符串在被加载到内存的时候解密。

  • 相关阅读:
    robotframework eclipse Robot Reference libraries不显示(selenium library无法导入)问题解决办法
    Navicat_Keygen_Patch 5.6如何使用
    电子标签拣货系统DPS
    matplotlib中的bar图
    Windows 10 清除文件
    npm包的上传npm包的步骤,与更新和下载步骤
    深入理解JWT的使用场景和优劣
    关于Vue.js去掉#号路由
    关于sklearn中的导包交叉验证问题
    python函数作用域
  • 原文地址:https://www.cnblogs.com/Terrylee/p/Enterprise_Library_Encryption_ConnectionStrings.html
Copyright © 2011-2022 走看看