加密解密技术—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读权限
随机推荐
- Neo4j简介
Neo4j简介 发表于2013年3月16日 11:52 p.m. 位于分类图数据库与图并行计算 现实中很多数据都是用图来表达的,比如社交网络中人与人的关系.地图数据.或是基因信息等等.RDBMS ...
- FPGA开发(2)
1. 通常SPI通信的验证流程: 2. 对于主机而言,这里的FPGA为从机,而我们最关心SPI_CS,SPI_CSK,SPI_MISI这三个信号.SPI_CS为片选使能端,片选有效时FPGA才可以接受 ...
- SPRING 配置文件和类名
今天写项目碰到一个很奇怪的问题,无论怎么改,还是一直包空指针 最终的问题出现在spring配置文件
- 为什么用户主目录下.bash_profile没有自动执行
请注意 一般登录当前用户后 .bash_profile会自动运行 如果不自动运行请查看是不是切换用户的时候使用的su 用户名而不是su - 用户名 添加中间这个 - 后 会除了切换用户外还会加载该用户 ...
- VBA基础知识———常用语句
语句一:if判断语句 Sub 判断1() '单条件判断 If Range("a1").Value > 0 Then Range("b1") = " ...
- Description:一根高筋拉面,中间切一刀,可以得到2根面条。如果先对折1次,中间切一刀,可以得到3根面条。如果连续对折2次,中间切一刀,可以得到5根面条。Input:你的程序需要解决的问题是,输入连续对折的次数。NOutput输出中间切一刀,可以得到多少根面条。
#include<iostream> using namespace std ; int main() { int n ; while(cin >> n) { << ...
- PHP获取中文汉字首字母方法
function getFirstLetter($str){ $fchar = ord($str{0}); if($fchar >= ord("A") and $fchar ...
- OC语法4——自定义构造方法,description方法
自定义构造方法: 我们已经知道创建对象分两步,1:在内存中开辟存储空间,并把地址存储在指针变量里,2:调用指针变量的初始化方法init初始化该对象. Student * stu = [Student ...
- 转:JS在文本域鼠标指定位置插入文本-柯乐义
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- python-摩斯码转换
意义:简单实现摩斯码的破译和生成 代码: #-*- coding: UTF-8 -*- ' __date__ = '2016/2/2' import pprint import re chars = ...