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

我们可以采用加密的方式,而我们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:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "C:\Program Files\Microsoft\.NET Pet Shop 4.0\Web"
PAUSE

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

-----------------------------------------------
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "C:\Program Files\Microsoft\.NET Pet Shop 4.0\Web"
PAUSE

C#中对Web.Config、App.Config字符串加密与解密的方法的更多相关文章

  1. C#项目实例中读取并修改App.config文件

    C#项目是指一系列独特的.复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间.预算.资源限定内,依据规范完成.项目参数包括项目范围.质量.成本.时间.资源. 1. 向C#项目实 ...

  2. MVC.Net:读取Web.config/App.config配置

    需要读取Web.config/App.config的配置很简单,首先我们需要将配置写入到<appSettings>中,例如: <appSettings> <add key ...

  3. asp.net中实现MD5加密、解密的方法

    这个MD5加密.解密的方法会使用即可. 使用时的代码备忘:Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile(& ...

  4. Visual Studio中xml文件使用app.config、web.config等的智能提示的方法

    在.Net开发的过程中,有时我们需要使用Xml文件作为配置文件(基于某些情况的考虑),而不是app.config.web.config这种,但是我们在xml中配置时希望可以增加类似编辑app.conf ...

  5. web.config/app.config敏感数据加/解密的二种方法

    一 建立虚拟目录  http://localhost/EncryptWebConfig,并添加web.config,其中包含数据库连接字符串: <connectionStrings>    ...

  6. asp.net web.config数据库连接字符串加密与解密

    在WEB网站开发过程中,如果我们将数据库连接字符串封装到.DLL文件中,将会给数据库和程序的迁移带来麻烦,因为万一服务器地址或者数据库发生变更,那么我们就不得不修改源程序并重新将其编译.最好的解决方法 ...

  7. 读取、添加、删除、修改配置文件 如(Web.config, App.config)

    private Configuration config; public OperateConfig() : this(HttpContext.Current.Request.ApplicationP ...

  8. C#/JS AES字符串加密和解密

    往往我们有一种需求:在页面端实现对即将传入到后台端的某些字符串进行加密,然后在后台端对传入进来的字符串做解密.在一些有安全要求的数据传输上会用到此种方式 下面分别列出js端和后台端的加密或解密代码. ...

  9. 自定义配置文件的使用(web.config/app.config)

    以下非原创作品,但都是自己看过理解并写过,记录下来,以便之后项目的使用或其它用途. (1)只需要简单配置单一属性值: <configuration> <configSections& ...

随机推荐

  1. 20181226 PL/SQL批量生产处理语句

    总有那么些时候,对某些特定条件的数据需要做更新或者修改,或者Truncate特定的一些表,而你又不想要每一个表都去写Truncate table 语句. 那么可以采用Select 的拼接语句 如下: ...

  2. c# ThreadPool 判断子线程全部执行完毕的四种方法

    1.先来看看这个 多线程编程 多线程用于数据采集时,速度明显很快,下面是基本方法,把那个auto写成采集数据方法即可. using System; using System.Collections.G ...

  3. 晨枫U盘启动盘制作工具V4.0-安装原版Win7

    第一类方法(32位64位系统通用): [1]找到Windows7系统的iso镜像,用UltraISO或者WinRAR打开iso镜像,然后提取/解压所有文件到你的U盘根目录. [2]在你的U盘里找到名为 ...

  4. KinectFusion测试

    谁告诉我说KinectFusion不能直接在Kinect2上直接用.今天心血来潮看了一下Kinect for Windows SDK中的头文件,发现完全可以用啊. 于是用SDK自带的Demo测试了一下 ...

  5. git 不区分文件大小写的处理

  6. Hybrid设计--离线更新

    首先server端和前端做一个增量发布系统 ,1.就是把一个增量包发布到一个版本的Native上去,让他做更新.2.后台对这个增量包的到达率或者成功的更新做一个统计.这是比较复杂的. 离线更新的机制: ...

  7. C++ 退出双层for循环,解决 break、return、continue无法实现问题

    遇到一个情景,采用双层for循环 遍历图像的像素,当找到某一个像素点满足条件时,退出双层for 循环 . 首先了解一下 continue.break.return 各自功能用法: 1.continue ...

  8. cocos2d JS 在 JavaScript 中,怎样把一个对象转化成 JSON 字符串?

    为什么今天要做这样子的操作,原因很简单,因为cocos JS 的本地缓存储存不了对象,所以当我通过本地缓存的 key和value来取值的时候就取不出来来,json的消息数据是一个对象来的,然而在做牌局 ...

  9. 【网络设备】某防火墙基于IP地址的目的地址转换

    由于来自Internet的对政府,企业的网络攻击日益频繁,因此需要对内网中向外网提供访问服务的关键设备进行有效保护.采用目的地址NAT可以有效地将内部网络地址对外隐藏. 图中:公网中Internet用 ...

  10. 【转载】C# 中的委托和事件(详解:简单易懂的讲解)

    本文转载自http://www.cnblogs.com/SkySoot/archive/2012/04/05/2433639.html C# 中的委托和事件(详解) C# 中的委托和事件 委托和事件在 ...