惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Securelist
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
V
V2EX
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
The Register - Security
The Register - Security
Recorded Future
Recorded Future
Y
Y Combinator Blog
小众软件
小众软件
Jina AI
Jina AI
V2EX - 技术
V2EX - 技术
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
宝玉的分享
宝玉的分享
The Hacker News
The Hacker News
C
Cybersecurity and Infrastructure Security Agency CISA
K
Kaspersky official blog
博客园 - 三生石上(FineUI控件)
T
Threatpost
博客园 - 聂微东
Scott Helme
Scott Helme
IT之家
IT之家
N
Netflix TechBlog - Medium
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
MongoDB | Blog
MongoDB | Blog
T
Tor Project blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
A
About on SuperTechFans
酷 壳 – CoolShell
酷 壳 – CoolShell
C
CERT Recently Published Vulnerability Notes
P
Palo Alto Networks Blog
Spread Privacy
Spread Privacy
C
Check Point Blog
L
LINUX DO - 最新话题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Last Week in AI
Last Week in AI
Attack and Defense Labs
Attack and Defense Labs
T
Tailwind CSS Blog
罗磊的独立博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Webroot Blog
Webroot Blog
Help Net Security
Help Net Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
爱范儿
爱范儿
PCI Perspectives
PCI Perspectives
Security Latest
Security Latest

博客园 - Charles Chen

.Net Framework 4.x 程序到底运行在哪个 CLR 版本之上(ZT) C#常用工具类——Excel操作类(ZT) C#程序以管理员权限运行(ZT) why happen "WaitHandles must be less than or equal to 64" fsn文件解析(C#) MS SQL执行大脚本文件时,提示“内存不足”的解决办法() OLDB读取excel的数据类型不匹配的解决方案(ZT) WinForm中使用XML文件存储用户配置及操作本地Config配置文件(zt) 理解DllImportAttribute中的属性 Winform中消息循环、异步操作、Control.Invoke&Control.BeginInvoke学习 Winform打包程序制作的快捷方式指向错误的位置(指向安装包文件) Reflector导出.NET工程项目的修复 存储过程返回值及输出参数笔记 使用本地系统帐户和域用户帐户两者区别(microsoft SQLServer2000)(ZT) SQL字符串的分组聚合(ZT) SQL中使用update inner join和delete inner join (ZT) C# ComboBox(DropDownList)数据绑定后,怎样再添加选项(ZT) 项目维护之WinXP IIS中HTTP500的来龙去脉 一次项目维护案例而对事务学习的笔记
加密配置文件(App.Config和Web.config)中connectionStrings通用方法
Charles Chen · 2015-04-29 · via 博客园 - Charles Chen

    1、 背景:根据项目的要求,需要对配置文件配置的数据库连接字符串进行加密,也就是对ConnectinString节点的内容进行加密存储,同时考虑到代码使用连接字符串不需要进行更改,C#会自动对加密的内容进行解密。

    2、需求:因此考虑单独开发一个winform程序,对配置文件进行加密和解密,通过ConfigurationManager中的OpenMappedExeConfiguration方法创建一个Configuration对象,然后在对这个对象中的指定节点进行操作。

     遇到的问题:

ConfigurationManager.OpenExeConfiguration("C:\Charles2008.config");     

这个方法在当前的目录下产生一个副本("C:\Charles2008.config.config"),而且返回的Configuration对象操作的不是Charles2008.config文件,而是程序自动创建的Charles2008.config.config文件,然而如果我把文件Charles2008.config更名为Charles2008.config.config文件或者删除Charles2008.config文件却提示:

加载配置文件时出错: 参数“exePath”无效。
参数名: exePath

    3、解决方法:从网上寻找帮助,发现还真的有和我遇到一模一样的问题,只需要在以上的代码进行稍微一点改动即可,改动后不生成文件副本,直接操作文件,更新也是操作此文件。

   

//先实例化一个ExeConfigurationFileMap对象,把物理地址赋值到它的 ExeConfigFilename 属性中; 
            ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); 
            fileMap.ExeConfigFilename = @"C:\Charles2008.config"
  
            //再调用fileMap 实例化 config , 这样,操作的文件就是Charles2008.config文件了,也不会产生副本文件 
            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 

    4、加密连接字符串:上面技术难点解决后,根据获取到Configuration对象Config调用以下方法即可对连接字符串进行加密。(仅针对ConectionString节点)

   ConfigurationSection connectionSection = config.GetSection("connectionStrings");
                if (connectionSection != null)
                {
                    connectionSection.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
                    config.Save();
                    MessageBox.Show("保存成功!""提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

   5、 备注

    加密和解密在同一台计算机上使用,在加密过程中,使用了一个基于本机的密钥。这就意味着加密和解密必须在同一台计算机上进行,否则将不能解密。同时,在一台计算机上加密的配置,在另一台计算机上将不能正常使用。

     连接字符串加密工具