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:\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字符串加密与解密的方法的更多相关文章
- C#项目实例中读取并修改App.config文件
C#项目是指一系列独特的.复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间.预算.资源限定内,依据规范完成.项目参数包括项目范围.质量.成本.时间.资源. 1. 向C#项目实 ...
- MVC.Net:读取Web.config/App.config配置
需要读取Web.config/App.config的配置很简单,首先我们需要将配置写入到<appSettings>中,例如: <appSettings> <add key ...
- asp.net中实现MD5加密、解密的方法
这个MD5加密.解密的方法会使用即可. 使用时的代码备忘:Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile(& ...
- Visual Studio中xml文件使用app.config、web.config等的智能提示的方法
在.Net开发的过程中,有时我们需要使用Xml文件作为配置文件(基于某些情况的考虑),而不是app.config.web.config这种,但是我们在xml中配置时希望可以增加类似编辑app.conf ...
- web.config/app.config敏感数据加/解密的二种方法
一 建立虚拟目录 http://localhost/EncryptWebConfig,并添加web.config,其中包含数据库连接字符串: <connectionStrings> ...
- asp.net web.config数据库连接字符串加密与解密
在WEB网站开发过程中,如果我们将数据库连接字符串封装到.DLL文件中,将会给数据库和程序的迁移带来麻烦,因为万一服务器地址或者数据库发生变更,那么我们就不得不修改源程序并重新将其编译.最好的解决方法 ...
- 读取、添加、删除、修改配置文件 如(Web.config, App.config)
private Configuration config; public OperateConfig() : this(HttpContext.Current.Request.ApplicationP ...
- C#/JS AES字符串加密和解密
往往我们有一种需求:在页面端实现对即将传入到后台端的某些字符串进行加密,然后在后台端对传入进来的字符串做解密.在一些有安全要求的数据传输上会用到此种方式 下面分别列出js端和后台端的加密或解密代码. ...
- 自定义配置文件的使用(web.config/app.config)
以下非原创作品,但都是自己看过理解并写过,记录下来,以便之后项目的使用或其它用途. (1)只需要简单配置单一属性值: <configuration> <configSections& ...
随机推荐
- wx工具栏,菜单栏,状态栏
#!/usr/bin/env python # -*- coding: utf- -*- import wx import wx.py.images class ToolbarFrame(wx.Fra ...
- Marathon1.5以上版本配置
今天部署marathon还按照之前的方式配置,结果启动时报错 Dec 03 23:51:36 bigdata01.zetyun.com marathon[12311]: No start hook f ...
- 安装ElasticSearch5.5.2 注意事项
官方文档中建议生产环境中打开 bootstrap.memory_lock: true 打开之后会报很多错误要优化一下系统参数 vim /etc/security/limits.conf * soft ...
- Laravel传值总结
Laravel传值:with,view(),compact方法一:with public function index() { $title = '文章标题1'; return view('artic ...
- 第一次java测试有感
今天下午的Java测试体会深刻,真的可能我一暑假学的还没有今天一下午学的多.但通过今天一下午地与Java近距离接触 ,我感受到我与真正的Java距离还是特别远的.以后我的路还很长,我对Java仍然还是 ...
- System.Web.UI.Page的页面基类
服务器端的page类 所有我们编写的页面都继承自page类,可见page类是非常重要的,page类提供了哪些功能,直接决定了我们的页面类可以继承什么功能,或者说,直接决定了我们的页面类功能的强大与否! ...
- Node.js进击基础一(5-11事件模块)
res.on res有on方法. 在nodejs中不存在浏览器里的冒泡捕获等行为,集成了一个模块events,对外暴露一个对象EventEmitter ,EventEmitter作用只有2个事件的发射 ...
- python gui messagebox
类似于win32的MessageBox框 //test.py from Tkinter import * from tkMessageBox import * root = Tk() li = ['C ...
- vim复制粘贴快捷键
mac下vim复制数据到剪切板: 查看目录是否支持 vim --version |grep "clipboard"
- 自定django登录跳转限制
django自定义一个登录跳转限制: 解释: 不登录不让跳转到其它页面. 原理: 做一个装饰器,在访问路由时,先进行判断,登录session是否存在,如果存在则跳转,不存在则返回到登录页面.或者你可以 ...