• C#中对Web.Config、App.Config字符串加密与解密的方法


         我们平常的项目里面的配置文件通常都是明文形式的存在,现在就是为了项目安全性增强,同时又显得高逼格点,

    我们可以采用加密的方式,而我们C#很强大,因为他内置的一些指令方式,很方便而且使用起来还不用解密,有木有

    觉得很高级?废话不多说,直接上操作

    1.正常来说我们的配置文件是这样的:

    2.加密完成之后是这样的:

    有木有觉得很神奇,加密之后那一串看着还像是一串加密串嘛?哈哈哈。。。

    =================================进入正题=================================

    1.先来看看如何在web.config中写入数据库连接字符串.打开web.config文件,一开始web.config文件里默认就有两个配置节,分别是"<connectionStrings/>","<appSettings/>",在这两个配置节下都可以写入连接字符串,一般来说是在<connectionStrings>中写,如:
    <connectionStrings>
    <add name = "connectionString" connectionString="server=localhost;database=hh_li;User ID=sa;password=”/>
    </connectionStrings>
    或者写在<appSettings>中:
    <appStrings>
    <add key=''connectionstring" value=”server=localhost;database=hh_li;User ID=sa;password=”/>  
    </appStrings>
    在以上两种方式中,name和key的值是连接字符串的"名字",就和一个变量的变量名一样,connectionString的值是具体的连接字符串内容.
    2.asp.net2.0中读取web.config数据库连接字符串2种方法
    方法一:
    string myConn = System.Configuration.ConfigurationManager.ConnectionStrings["sqlConnectionString"].ConnectionString;
    方法二:
    string connString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["sqlConnectionString"].ToString();
    3.web.config中连接字符串的加密解密

    3.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内置的密码学技术来加解密配置节。默认情况下,这个提供程序使用本机的密钥。

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

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

    •      使用加密的连接字符串

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

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

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

    •      中文路径问题

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

    附BAT加解密脚本:

    -----------------------------------------------

    连接字符串加密

    -----------------------------------------------
    @echo off
    C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_regiis.exe -pef "connectionStrings" "C:Program FilesMicrosoft.NET Pet Shop 4.0Web"
    PAUSE


    -----------------------------------------------
    连接字符串解密

    -----------------------------------------------
    @echo off
    C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_regiis.exe -pdf "connectionStrings" "C:Program FilesMicrosoft.NET Pet Shop 4.0Web"
    PAUSE

  • 相关阅读:
    has a / is a 的区别
    Linux头文件作用
    转一篇Decorator模式的讲解文章
    歌手推荐kate st. john
    拷贝构造函数和赋值构造函数声明为私有的作用
    重新认识C++中new的用法
    系统程序员成长计划容器与算法(二)(下)
    深入C++的new
    歌手推荐Cara Dillon
    浅析一道C++设计面试题
  • 原文地址:https://www.cnblogs.com/become/p/7339782.html
Copyright © 2020-2023  润新知