关于配置文件的节点内容加密(备忘)
在这里呢,将要介绍一种加密 web.config 文件中节的方法,
就是 DPAPI 也就是使用 DataProtectionConfigurationProvider 来实现,
其实呢,还有一种加密的算法,叫做 RSA 加密算法,
不过在实现上这个 RSA 和 DPAPI 差不多,
所以只要注意看一下代码就 OK 了,
DPAPI 是使用的 Windows Data Provider API 来实现加密和解密的,
其中的 Provider 字符串为 DataProtectionConfigurationProvider,
而 RSA 的 Provider 字符串为 RSAProtectedConfigurationProvider,
对于 RSA ,其在 MSDN Library 中有一个非常详细的例子,
不懂得可以去看一下,
这一次呢,
主要是讲一下如何对 web.config 中的 appSettings 和
connectionStrings 实现加密和解密,
其实呢,这两个在加密和解密的实现上根本没有区别,
您只需要在 web.config 中获取这两个节就可以来加解密了,
还是直接看代码和效果比较实在
using System;
using System.Web.Configuration;
using System.Configuration; namespace WebForm
{ public partial class Demo__1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } //使用 DPAPI 加密 appSettings protected void btnAddApp_Click(object sender, EventArgs e) { //Request.ApplicationPath //获取服务器上 ASP.NET 应用程序的虚拟应用程序根路径。 //当前应用程序的虚拟路径。 //开启 Request.ApplicationPath 应用程序所在的 web.config 文件 Configuration config = WebConfigurationManager. OpenWebConfiguration(Request.ApplicationPath); //获取 web.config 中的 appSettings 区块 ConfigurationSection configSection = config.GetSection("appSettings"); //如果这个区块还没有被加密 if (!configSection.SectionInformation.IsProtected) { //进行加密操作 configSection.SectionInformation. ProtectSection("DataProtectionConfigurationProvider"); //将加密的结果保存回 web.config 文件中 config.Save(); lblMsg.Text = "AppSettings 使用 DPAPI 加密成功!!!"; } else { lblMsg.Text = "AppSettings " + "已经被 DPAPI 加密了,此次加密操作被取消!!!"; } } //使用 DPAPI 加密 connectionStrings protected void btnAddCon_Click(object sender, EventArgs e) { //Request.ApplicationPath //获取服务器上 ASP.NET 应用程序的虚拟应用程序根路径。 //当前应用程序的虚拟路径。 //开启 Request.ApplicationPath 应用程序所在的 web.config 文件 Configuration config = WebConfigurationManager. OpenWebConfiguration(Request.ApplicationPath); //获取 web.config 中的 appSettings 区块 ConfigurationSection configSection = config.GetSection("connectionStrings"); //如果这个区块还没有被加密 if (!configSection.SectionInformation.IsProtected) { //进行加密操作 configSection.SectionInformation. ProtectSection("DataProtectionConfigurationProvider"); //将加密的结果保存回 web.config 文件中 config.Save(); lblMsg.Text = "ConnectionStrings 使用 DPAPI 加密成功!!!"; } else { lblMsg.Text = "ConnectionStrings " + "已经被 DPAPI 加密了,此次加密操作被取消!!!"; } } //进行解密 protected void btnSub_Click(object sender, EventArgs e) { Configuration config = WebConfigurationManager. OpenWebConfiguration(Request.ApplicationPath); ConfigurationSection configAppSection = config.GetSection("appSettings"); if (configAppSection.SectionInformation.IsProtected) { //在解密时,并不需要区分是 DPAPI 加密的还是 RSA 加密的 //其均会自行解密 configAppSection.SectionInformation.UnprotectSection(); config.Save(); lblMsg.Text = "解密成功!!!"; } else { lblMsg.Text = "该区块暂时还没有被加密,所以无需解密!!!"; } ConfigurationSection configConSection = config.GetSection("connectionStrings"); if (configConSection.SectionInformation.IsProtected) { configConSection.SectionInformation.UnprotectSection(); config.Save(); lblMsg.Text = "解密成功!!!"; } else { lblMsg.Text = "该区块暂时还没有被加密,所以无需解密!!!"; } } }
}
以上就是所有的 Code-Behind 了
看截图吧
加密前的 appSettings 和 connectionStrings
对 appSettings 加密后
再在对 appSettings 加密的基础上对 connectionStrings 加密
以上就是对 appSettings 和 connectionStrings
使用 DPAPI 加密后的结果
然后再对 appSettings 和 connectionStrings 解密
以上就是使用 DPAPI 加密的过程了,
实质上还可以使用一种方法,也就是 RSA 加密,
使用这种方式加密其实和 DPAPI 加密方式差不多,
您只需要在加密时,把上面的 Provider 参数字符串由
DataProtectionConfigurationProvider
改为 RSAProtectedConfigurationProvider 就 OK 了,
感兴趣的可以去试试,还有就是推荐一下 MSDN Library 中的那个 Demo,
也蛮好的,自己去找找看吧。
转载于:https://www.cnblogs.com/Jaryleely/archive/2010/07/22/1783185.html
关于配置文件的节点内容加密(备忘)相关推荐
- php 配置文件加密工具类,SpringBoot集成Jasypt安全框架以及配置文件内容加密(代码示例)...
本篇文章给大家带来的内容是关于SpringBoot集成Jasypt安全框架以及配置文件内容加密(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我们在SpringBoot项 ...
- 推荐一款可自动即时保存备忘内容的电脑记事本软件
有很多小伙伴都有过用电脑记事本.便利贴等记录了好多内容后,没有点击保存直接关了!这就很尴尬了!刚写好的东西没保存可是找不回来的! 如果用全百科备忘记事本软件就不会发生这样的问题了!全百科备忘记事本软件 ...
- 备忘录怎么显示在电脑桌面上 可以将备忘内容显示到桌面的便签
随着科技的发展,现在人手一台电脑已经是常态,我们每天有大量的工作内容或者学习内容,要在电脑上完成.如果工作任务或者学习任务太多,需要记录下来该怎么办,你在电脑上用过备忘录之类的软件吗? 有人说电脑系统 ...
- 华为如何在手机桌面显示备忘录的备忘内容
在华为手机上可以使用很多好用的备忘录工具,比如系统自带的备忘录,再比如,支持在其他手机端共享备忘录事项的云便签.这些好用的备忘录功能强大,不仅能打开应用查看备忘内容,还支持添加窗口小工具,让备忘录内容 ...
- azure_Azure ML算法备忘单
azure 云计算 , 机器学习 (Cloud Computing, Machine Learning) A common question often asked in Data Science i ...
- eazy ui 复选框单选_UI备忘单:单选按钮,复选框和其他选择器
eazy ui 复选框单选 重点 (Top highlight) Pick me! Pick me! No, pick me! In today's cheat sheet we will be lo ...
- Spring Spring MVC Hibernate 整合备忘
以下为此三种框架整合配置的详细备注,以及部分问题备忘 项目结构和配置文件可访问 Github 查看 1. pom.xml 尽量使用 Maven 管理项目依赖以减少包引入时的麻烦,以及避免跨开发工具问题 ...
- 对于HTTP过程中POST内容加密的解决方案
对于HTTP过程中POST内容加密的解决方案 参考文章: (1)对于HTTP过程中POST内容加密的解决方案 (2)https://www.cnblogs.com/Wh7Ro/p/11297501.h ...
- EOS源码备忘-Push Transaction机制
这里我们讨论EOS Push Transaction 的逻辑,这块EOS与Eosforce实现有一些区别,我们会着重点出. 关于wasm相关的内容我们会有一片专门的文档分析. 我们这里通常将Trans ...
- Aurora开发备忘
Aurora开发备忘 Aurora开发备忘 1 screen文件 1.1 字段只读 1.2 lov 弹出式选择框,带查询按钮和查询条件 1.3 通过 js手动执行dataSet中的查询 1.4 在js ...
最新文章
- 用筛法求之N内的素数。(N 1000000)
- 为何 IntelliJ IDEA 比 Eclipse 更好?
- [网络安全自学篇] 三十三.文件上传之绕狗一句话原理和绕过安全狗(六)
- Hadoop入门(二十四)Mapreduce的求TopK程序
- JS高级 - 面向对象3(面向过程改写面向对象)
- Pytorch 编译cpp、cuda扩展遇到的问题
- labelme新版本的使用须知
- 安卓学习-界面-ui-Spinner
- 远程桌面/远程登陆中强行登陆(他人退出)与切换回话(登陆后切换到上次别的登陆)3389...
- CS229 Machine Learning 自学与答案
- MATLAB机器人工具箱的下载与安装
- mac php codesniffer,[转载]使用PHP_CodeSniffer规范php代码
- 20-50人,拓展基地_拓展训练_拓展基地_拓展公司推荐_嗨牛团建
- java设备未就绪_java.io.IOException: 设备未就绪。怎么解决?
- java map扩容机制_Java HashMap的原理、扩容机制、以及性能思考
- turtlepen画出小黄人
- java的几种基本数据类型及其大小
- Arduino休眠模式和看门狗以及中断详解
- 【miscellaneous】监狱安防系统智能视频监控系统设计方案
- 项目规划管理 - 3