如何对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
- <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
- <EncryptedData>
- <CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo+ogiigQAAAACAAAAAAADZgAAqAAAABAAAADbDjp+bAce//lsg/so66+8AAAAAASAAACgAAAAEAAAANlF3b73Kdupv/cAf4a9nPUwAQAAoTvrHdAjNjaJFEfiG7pD6sG8GMNJKGpnd4JLchu7W9XhOuPgG4C/LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/aYri1Wmlo2zyRqSkg0hQFQbObCf7lrgWEUjsv+pEOS5OVXcgNhFipVMy5iQ8sH5fNHmGg8gu5JlZQaOqYFG8ci7MGOebcQzR67krJXRBrs26lZtAj8lzf2bK+QcSqtU7Rt4C33JbLqisPL9xhfoUl9GvGTu5VS1S1H5VtErTeYXxnL7PTIr3cNjIbDMjI48LJfoOgtymT35KUdK3J0DxB68DqPaeK5QSEC/L0+6bizStRZ7BDnOngV/XfiVJnbSNYXX5IShQAAACuGn8QGUuQ4TOzkKcc891SV/CVDQ==</CipherValue>
- </CipherData>
- </EncryptedData>
- lt;/connectionStrings>
3. 解密
解密该连接字符串也很简单
aspnet_regiis.exe -pdf "connectionStrings" '你的web项目路径"

解密后的结果:
[xhtml] view plain copy
- <connectionStrings>
- <add name="Sql" connectionString="Data Source=.;Initial Catalog=MySchool;Integrated Security=True" />
- </connectionStrings>
4. 后台代码读取配置文件web.config中数据库连接字符串的方法:
[c-sharp] view plain copy
- using System.Configuation;
- …
- protected void Page_Load(object sender, EventArgs e)
- {
- lblMessage.Text = ConfigurationManager.ConnectionStrings["Sql"].ToString();
- }
- …
运行效果图:

5. 在连接字符串的加密和解密的过程中,需要注意一下几点。
- 使用加密的连接字符串
使用加密的连接字符串不需要编码解密,ASP.NET会自动对加密内容进行解密。
- 加密和解密在同一台计算机上使用
在加密过程中,使用了一个基于本机的密钥。这就意味着加密和解密必须在同一台计算机上进行,否则将不能解密。同时,在一台计算机上加密的配置,在另一台计算机上将不能正常使用。
- 中文路径问题
该命令对中文支持不是很好。如果站点的路径中有中文字符,也许不能正常加解密。
如何对web.config进行加密和解密的更多相关文章
- IOS, Android, Java Web Rest : RSA 加密和解密问题
IOS, Android, Java Web Rest : RSA 加密和解密问题 一对公钥私钥可以使用 OpenSSL创建, 通常 1024位长度够了. 注意: 1. 公钥私钥是BASE64编码的 ...
- C#中对Web.Config、App.Config字符串加密与解密的方法
我们平常的项目里面的配置文件通常都是明文形式的存在,现在就是为了项目安全性增强,同时又显得高逼格点, 我们可以采用加密的方式,而我们C#很强大,因为他内置的一些指令方式,很方便而且使用起来还不用解密, ...
- 【转】Encrypt ConnectionString in Web.Config 【加密ASP.NET web.config数据库链接字串】
原文链接:https://www.codeproject.com/Tips/795135/Encrypt-ConnectionString-in-Web-Config web.config中一般会存放 ...
- JAVA WEB实现前端加密后台解密
最近在研究登陆密码的加密,下边上具体代码,只是给出核心代码,具体的代码视业务而定吧,给位有什么问题或者意见请留言. 加密方法用的是AES-128-CBC,BASE64用的是org.apache.com ...
- 加密解密技术—Web.config加密和解密
阅读目录 一:我们为什么要对web.config配置文件中的配置节加密? 二:怎么样加密和解密? 三:实例 四:运行效果 一:我们为什么要对web.config配置文件中的配置节加密? 因为在我们的项 ...
- 说一说ASP.NET web.config 加密及解密方法 (代码)
/// <summary> /// 保护web.config的加密和解密 /// </summary> public class ProtectHelper { /// < ...
- 加密web.config
当我们要进行数据库的连接时,就会根据<%$ connectionsStrings:MyConnectionStringName %>这个表达式在Web.config文件中找到和MyConn ...
- web config数据库连接字符串加密
ASP.NET web.config中,数据库连接字符串的加密与解密 ASP.NET web.config中,数据库连接字符串的加密与解密. 开始--->运行,输入cmd,接着输入以下内容 加密 ...
- 对web.config加密,和解密码详细说明
可以使用受保护配置来加密 Web 应用程序配置文件(如 Web.config 文件)中的敏感信息(包括用户名和密码.数据库连接字符串和加密密钥).对配置信息进行加密后,即使攻击者获取了对配置文件的访问 ...
随机推荐
- taginput ,complete使用笔记
页面用到自动完成功能及需要taginput控件去展示,查资料的过程中发现 有两个类似的jQuery类库,到现在我也没搞明白它们两个有啥关联,jquery.tagsinput.js和bootstrap- ...
- [蟒蛇菜谱]Python日志记录最佳实践
# -*- coding: utf8 -*- import logging # 创建一个logger logger = logging.getLogger('mylogger') logger.set ...
- 使用windows crypt API解析X509证书
一.版本号 结构体CERT_INFO中的字段dwVersion即为证书版本,可以直接通过下面的代码获得: DWORD dwCertVer = m_pCertContext->pCertInfo- ...
- C#中datatable导出excel(三种方法)
方法一:(拷贝直接可以使用,适合大批量资料, 上万笔) Microsoft.Office.Interop.Excel.Application appexcel = new Microsoft.Offi ...
- Shell 编写准则
Shell 中备注符号: # 或者 " 作为Shell中的备注符号. 需要注意的是,首行的#!/bin/bash 不是注释 Shell 格式 首行输入 #!/bin/bash 中间输入运行 ...
- mysql多种备份方式比较及实现
Mysql备份 MySQL的备份和还原: 备份:存放为副本-->数据备份 RAID1,RAID10:保证硬件损坏而不会业务中止,不能保证逻辑上的损害 例如:DROP TABLE mydb.tb1 ...
- 【Fine原创】常见的HTTP错误码的具体含义整理
常见的HTTP错误码的具体含义 "100" : Continue 客户端应当继续发送请求. "101" : witching Protocols ...
- iOS8: Ignore manifest download, already have bundleID
在企业分发的app下载过程中,iOS8发现挂在官网上的企业版的app点击了提示是否安装应用程序,但始终安装不上程序,的device console发现安装的时候出现 LoadExternalDownl ...
- SILVERLIGHT 应急卫生模拟演练项目之loading界面实现
第一次在博客园写文章 俺是菜鸟 有不足之处还请大佬们多多指教 第一次也不知道该写啥 俺就拿自己最近做的一个项目 来细说吧 俺们公司是做医疗卫生方面的 其中有一块涉及到应急卫生模拟演练方面 这块分到我 ...
- thinkphp3.2.3分页
View <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...