C#为配置文件加密的实现方法
2021/10/18 12:09:44
本文主要是介绍C#为配置文件加密的实现方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
用aspnet_regiis 工具修改配置文件
一、加密文件可以使用的Provider
.NET为我们提供了一个工具aspnet_regiis.exe来对web.config文件中的敏感信息进行加密(app.config文件可以先改名为web.config,加密后再改回app.config)。你可以使用两个provider中的一个来进行加密:
System.Configuration.DPAPIProtectedConfigurationProvider:在System.Configuration.dll中,使用Windows DPAPI(Data Protection API)来进行加密,密钥存在Windows Local Security Authority(LSA)中。
注意:当使用DPAPIProtectedConfigurationProvider时,加密文件所使用的帐号需要与运行web application的帐号相同,否则web application无法解密加密的内容。
System.Configuration.RSAProtectedConfigurationProvider:在System.Configuration.dll中,使用RSA算法来进行加密(RSA算法是非对称加密,具体可参见前面一篇文章C#对称加密与非对称加密),公钥存放在config文件当中,只有加密的计算机有密钥。RSAProtectedConfigurationProvider通常是默认的缺省provider。
二、加密文件的命令
加密web.config文件可以使用:
aspnet_regiis -pef section web-app-physical-dir Encrypt the configuration section. Optional arguments: [-prov provider] Use this provider to encrypt.
比如运行下面的命令就会分别对connectionStrings和appSettings中的信息进行加密:
aspnet_regiis.exe -pef "connectionStrings" "C:\myweb\HelloService" aspnet_regiis.exe -pef "appSettings" "C:\myweb\HelloService"
其中RSAProtectedConfigurationProvider是默认的缺省provider,如果想使用DPAPIProtectedConfigurationProvider,可以用-prov参数指明:
aspnet_regiis.exe -pef "connectionStrings" "C:\myweb\HelloService" -prov "DataProtectionConfigurationProvider"
aspnet_regiis.exe -pef "appSettings" "C:\myweb\HelloService" -prov "DataProtectionConfigurationProvider"
加密配置文件后,源程序不需要做任何改动。如果要修改或添加新的配置信息,需要先解密配置文件。不论使用哪种Provider,都只能在进行加密的计算机上对配置文件进行解密。
三、解密文件的命令
解密的命令如下(解密命令不需要-prov参数):
-pdf section web-app-physical-dir Decrypt the configuration section. aspnet_regiis.exe -pdf "connectionStrings" "C:\myweb\HelloService" aspnet_regiis.exe -pdf "appSettings" "C:\myweb\HelloService"
四、总结
配置文件中经常会有用户名密码的敏感信息,为了防止该信息泄露,需要对配置文件进行加密。加密与解密可以使用.NET提供的工具aspnet_regiis.exe,可以在Windows .NET的文件夹中找到它。
该工具只对web.config文件进行修改,如果要加密或解密app.config,可以先将app.config文件改名为web.config,加密或解密后再改回来。
希望本文所述对大家的C#程序设计有所帮助。
加密命令:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis.exe -pef "appSetting
s" "F:\aaa"
正在加密配置节...
成功!
解密命令:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis.exe -pdf "appSetting
s" "F:\aaa"
正在解密配置节...
成功!
说明:
-pef或-pdf后跟的是需要配置的节点的名字,后边的F:\aaa是放web.config配置文件的绝对路径
-pef 对指定物理(非虚拟)目录中的 Web.config 文件的指定配置节进行加密。
对应的这个解密则是
-pdf 参数 对指定物理(非虚拟)目录中的 Web.config 文件的指定配置节进行解密。
可以使用
aspnet_regiis -pc "myKey" -pku 创建密钥;
aspnet_regiis -px "myKey" -pku 导出密钥;
aspnet_regiis -pi "myKey" -pku 导入密钥;
创建密钥必须使用aspnet_regiis -pc "myKey" -exp 这样才能被 -px参数导出。
-pri 选项,用于确保已导出私钥信息。否则,导出的密钥信息只能对信息进行加密,而不能进行解密。
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -px "myKey" "f:\aaa\
keys.xml" -pri
正在将 RSA 密钥导出到文件...
成功!
为了确保没有人可以对已经用 RSA 密钥容器加密的 Web.config 文件进行解密,将 RSA 密钥容器导出到 .xml 文件后,请将 .xml 文件复制到 Web 服务器的外部位置,然后从 Web 服务器上删除该文件。
若要删除 RSA 密钥容器,请在命令提示处运行带有 -pz 开关的 aspnet_regiis.exe,后跟 "myKey"。
例如,下面的命令将删除 "myKey":
aspnet_regiis -pz "myKey"
-pi 选项,后跟已导出的密钥容器的名称 "myKey",用于导入 RSA 密钥容器。
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pi "myKey" "f:\aaa\
keys.xml"
正在从文件导入 RSA 密钥...
成功!
https://www.cnblogs.com/wayshan/archive/2012/04/09/web_config.html
这篇关于C#为配置文件加密的实现方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#