在这里呢,将要介绍一种加密 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

关于配置文件的节点内容加密(备忘)相关推荐

  1. php 配置文件加密工具类,SpringBoot集成Jasypt安全框架以及配置文件内容加密(代码示例)...

    本篇文章给大家带来的内容是关于SpringBoot集成Jasypt安全框架以及配置文件内容加密(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我们在SpringBoot项 ...

  2. 推荐一款可自动即时保存备忘内容的电脑记事本软件

    有很多小伙伴都有过用电脑记事本.便利贴等记录了好多内容后,没有点击保存直接关了!这就很尴尬了!刚写好的东西没保存可是找不回来的! 如果用全百科备忘记事本软件就不会发生这样的问题了!全百科备忘记事本软件 ...

  3. 备忘录怎么显示在电脑桌面上 可以将备忘内容显示到桌面的便签

    随着科技的发展,现在人手一台电脑已经是常态,我们每天有大量的工作内容或者学习内容,要在电脑上完成.如果工作任务或者学习任务太多,需要记录下来该怎么办,你在电脑上用过备忘录之类的软件吗? 有人说电脑系统 ...

  4. 华为如何在手机桌面显示备忘录的备忘内容

    在华为手机上可以使用很多好用的备忘录工具,比如系统自带的备忘录,再比如,支持在其他手机端共享备忘录事项的云便签.这些好用的备忘录功能强大,不仅能打开应用查看备忘内容,还支持添加窗口小工具,让备忘录内容 ...

  5. azure_Azure ML算法备忘单

    azure 云计算 , 机器学习 (Cloud Computing, Machine Learning) A common question often asked in Data Science i ...

  6. eazy ui 复选框单选_UI备忘单:单选按钮,复选框和其他选择器

    eazy ui 复选框单选 重点 (Top highlight) Pick me! Pick me! No, pick me! In today's cheat sheet we will be lo ...

  7. Spring Spring MVC Hibernate 整合备忘

    以下为此三种框架整合配置的详细备注,以及部分问题备忘 项目结构和配置文件可访问 Github 查看 1. pom.xml 尽量使用 Maven 管理项目依赖以减少包引入时的麻烦,以及避免跨开发工具问题 ...

  8. 对于HTTP过程中POST内容加密的解决方案

    对于HTTP过程中POST内容加密的解决方案 参考文章: (1)对于HTTP过程中POST内容加密的解决方案 (2)https://www.cnblogs.com/Wh7Ro/p/11297501.h ...

  9. EOS源码备忘-Push Transaction机制

    这里我们讨论EOS Push Transaction 的逻辑,这块EOS与Eosforce实现有一些区别,我们会着重点出. 关于wasm相关的内容我们会有一片专门的文档分析. 我们这里通常将Trans ...

  10. Aurora开发备忘

    Aurora开发备忘 Aurora开发备忘 1 screen文件 1.1 字段只读 1.2 lov 弹出式选择框,带查询按钮和查询条件 1.3 通过 js手动执行dataSet中的查询 1.4 在js ...

最新文章

  1. 用筛法求之N内的素数。(N 1000000)
  2. 为何 IntelliJ IDEA 比 Eclipse 更好?
  3. [网络安全自学篇] 三十三.文件上传之绕狗一句话原理和绕过安全狗(六)
  4. Hadoop入门(二十四)Mapreduce的求TopK程序
  5. JS高级 - 面向对象3(面向过程改写面向对象)
  6. Pytorch 编译cpp、cuda扩展遇到的问题
  7. labelme新版本的使用须知
  8. 安卓学习-界面-ui-Spinner
  9. 远程桌面/远程登陆中强行登陆(他人退出)与切换回话(登陆后切换到上次别的登陆)3389...
  10. CS229 Machine Learning 自学与答案
  11. MATLAB机器人工具箱的下载与安装
  12. mac php codesniffer,[转载]使用PHP_CodeSniffer规范php代码
  13. 20-50人,拓展基地_拓展训练_拓展基地_拓展公司推荐_嗨牛团建
  14. java设备未就绪_java.io.IOException: 设备未就绪。怎么解决?
  15. java map扩容机制_Java HashMap的原理、扩容机制、以及性能思考
  16. turtlepen画出小黄人
  17. java的几种基本数据类型及其大小
  18. Arduino休眠模式和看门狗以及中断详解
  19. 【miscellaneous】监狱安防系统智能视频监控系统设计方案
  20. 项目规划管理 - 3

热门文章

  1. csv数据源的创建(一)
  2. 满足客户的需求是要有前提的!
  3. Jedis与Lua脚本结合
  4. idea配置maven后提示 commond not found
  5. hihocoder 1186
  6. LeetCode 127. Word Ladder
  7. JS操作JSON数据交换
  8. PHP判断远程url是否有效的几种方法
  9. 实现简单的Console
  10. Windows Workflow Foundation开发环境配置