加密解密技术—Web.config加密和解密
阅读目录
一:我们为什么要对web.config配置文件中的配置节加密?
二:怎么样加密和解密?
三:实例
四:运行效果
一:我们为什么要对web.config配置文件中的配置节加密?
因为在我们的项目中,有的配置节可能包含敏感信息,我们看下面的<connectionStrings/>配置节中包含了我们连接 数据库的用户名和密码以及IP地址,这要是暴露出去是很危险的,还有<identity/>配置节中包含了运行时使用的模拟账号的用户名和密 码,这些配置节都包含着敏感信息,我们不希望密码以明文的方式存储在配置文件里,所以我们要对其进行加密
  <connectionStrings>
     <add name="LocalHostEPGConnectionStr" connectionString="server=.;database=NewNewEPG;User ID=sa;password=123" providerName="System.Data.SqlClient"/>
  </connectionStrings>
二:怎么样加密和解密?
使用SectionIntomation对象可以对web.config进行加密和解密
如果要加密一个配置节,只需要调用SectionIntomation对象的ProtectSection()方法,传递一个要使用的提供程序的名字来执行加密
如果要解密一个配置节,当需要解密文件的配置节时,只需要调用SectionIntomation对象的UnprotectSection()方法完成解密
1:ProtectSection()方法
此方法对web.config中的配置节进行加密
语法如下:
public void ProtectSection(string ProtectProvider)
  参数说明如下:
  ProtectProvider:要使用的保护提供程序的名称,默认下包含以下保护提供程序加密,这个参数必须写已
存在的保护提供程序的名称,比如:“RSAProtectedConfigurationProvider”,不能写“MyName”,否则会报找不到保
护提供程序“MyName”
1.1:RSAProtectedConfigurationProvider:使用RSA加密算法对数据进行加密和解密
1.2:DPAPIProtectedConfigurationProvider:使用Windows数据保护API(DPAPI)对数据进行加密和解密
2:UnprotectSection()方法
此方法对关联的配置节移除受保护的配置解密
三:实例
  ConfigurationManager来自命名空间System.Configuration,而
WebConfigurationManager来自命名空间System.Web.Configuration,微软建议:在Web应用程序配置文件的
操作时建议采用WebConfigurationManager ;在客户端配置文件的操作时建议采用ConfigurationManager
,我们都得引用这两个命名空间
我们最后看到解密后的<connectionStrings/>配置节和未加密前的配置节是一模一样的
WebConfigEncryptDecrypt.aspx
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Web.Configuration;
  using System.Configuration;
  namespace EPG.WebAdmin.EncryptDecrypt
  {
      public partial class WebConfigEncryptDecrypt : System.Web.UI.Page
      {
          protected void Page_Load(object sender, EventArgs e)
          {
}
  /// <summary>
          /// 加密Web.config文件
          /// </summary>
          protected void btnEncrypt_Click(object sender, EventArgs e)
          {
              //得到当前配置文件
              Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
              //得到节部分
              ConfigurationSection section = config.GetSection("connectionStrings");
              //如果节不为空并且这个节没被保护
              if (section != null && !section.SectionInformation.IsProtected)
              {
                  //保护指定的节使用RSA加密算法对数据进行加密和解密
                  section.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
        //保存
                  config.Save();
        RegisterStartupScript("","<script>alert('加密成功!')</script>");
              }
          }
     
          /// <summary>
          /// 解密Web.config文件
          /// </summary>
          protected void btnDecrypt_Click(object sender, EventArgs e)
          {
              //得到当前配置文件
              Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
              //得到节部分
              ConfigurationSection section = config.GetSection("connectionStrings");
              //如果节不为空并且这个节被保护
              if (section != null && section.SectionInformation.IsProtected)
              {
                  //保护指定的节使用RSA加密算法对数据进行加密和解密
                  section.SectionInformation.UnprotectSection();
                  //保存
                  config.Save();
                  RegisterStartupScript("", "<script>alert('解密成功!')</script>");
              }
          }
  }
  }
四:运行效果
界面设计
  
未加密的<connectionStrings/>配置节
  
加密后的<connectionStrings/>配置节
  
解密后的<connectionStrings/>配置节
  
加密解密技术—Web.config加密和解密的更多相关文章
- 对web.config加密,和解密码详细说明
		可以使用受保护配置来加密 Web 应用程序配置文件(如 Web.config 文件)中的敏感信息(包括用户名和密码.数据库连接字符串和加密密钥).对配置信息进行加密后,即使攻击者获取了对配置文件的访问 ... 
- 创建自己的RSA密钥来保护web.config 加密数据库连接字符串
		通过创建自己的RSA密钥来保护web.config1创建RSA密钥:C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis - ... 
- 【转】Encrypt ConnectionString in Web.Config 【加密ASP.NET web.config数据库链接字串】
		原文链接:https://www.codeproject.com/Tips/795135/Encrypt-ConnectionString-in-Web-Config web.config中一般会存放 ... 
- web.config 加密/解密
		(Aspnet_regiis.exe) 这样的一个工具,可以对站点的.config文件的节进行加密 方法: #> 加密:aspnet_regiis -pef "加密的web.confi ... 
- Web.config加密和解密
		在系统部署的时候,大家都会遇到关于用户凭证的安全性问题,而对于数据库连接的相关的信息,有些时候客户也需要我们对其加密,防止信息泄露,在此将加密和解的方法记录于此: 首先用管理员的权限启动cmd命令窗口 ... 
- Web.Config加密与解密
		可以使用受保护配置来加密 Web 应用程序配置文件(如 Web.config 文件)中的敏感信息(包括用户名和密码.数据库连接字符串和加密密钥).对配置信息进行加密后,即使攻击者获取了对配置文件的访问 ... 
- 说一说ASP.NET web.config 加密及解密方法 (代码)
		/// <summary> /// 保护web.config的加密和解密 /// </summary> public class ProtectHelper { /// < ... 
- web.config 加密/解密 正确版
		一般加密方式: 利用Aspnet_regiis: cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis -pe "co ... 
- win10  IIS web.config加密不能访问:打不开 RSA 密钥容器
		C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 找到密钥文件, 根据时间判断具体是哪一个文件,赋予network service读权限 
随机推荐
- MySqL触发器以及常用转换函数注意事项
			1,触发器(http://www.cnblogs.com/zzwlovegfj/archive/2012/07/04/2576989.html) 1.MYSQL中触发器中不能对本表进行 i ... 
- STL MAP 反序迭代
			ITS_NOTICE_MAP::reverse_iterator it = noticeMap.rbegin(); for ( ; it != noticeMap.rend(); ++it ) { I ... 
- Mysql中时间的操作笔记
			1.创建修改表时,为datetime字段设置当前时间为默认值 CREATE TABLE `NewTable` ( `id` int(11) NOT NULL AUTO_INCREMENT , `des ... 
- [C#]Windows文件分类器小程序
			我平时习惯把各种文件都下载在`下载`文件夹中,时间久了,文件多了,想要找个文件就不那么方便了.于是我就想自己写一个小程序来实现下载文件的自动整理.我想到的文件分类方式是按照文件扩展名分类:把各文件移动 ... 
- C语言如何定义结构体
			原文地址 1. struct与typedef struct区别 struct是结构体的关键字,用来声明结构体变量如 struct student { char num[10]; ch ... 
- 考察printf函数返回值
			最近偶然间见了这样一道题: #include<stdio.h> int main() { ; printf("%d\n",printf("%d", ... 
- CentOS和Redhat发行版linux内核版本的对应关系
			由于Redhat和CentOS的发行版本现在众多,所以我们应该知道CentOS和Redhat及linux内核之间版本的对应关系对维护系统还是很有帮助的.对应的列表如下: Redhat 9.0————— ... 
- Nginx模块开发入门(转)
			前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并 ... 
- 面向对象程序设计-C++_课时16子类父类关系
			初始化列表 类名::类名(形参1,形参2,...形参n):数据成员1(形参1),数据成员2(形参2),...,数据成员n(形参n) { ... } 规则1,初始化列表进行数据成员的初始化 规则2,初始 ... 
- C语言 大小端 字节对齐
			参考:http://www.cnblogs.com/graphics/archive/2011/04/22/2010662.html 1. 大端序:数据的高位字节存放在地址的低端,低位字节存放在地址的 ... 
