C#如何加密或隐藏配置文件中的Password敏感字段值?
配置文件Password字段加密解决方案
你当前使用的是.NET Framework的客户端应用配置,要加密userSettings节下的Password字段,之前使用安全应用配置功能报错多为配置节路径指定错误导致,以下是两种可直接落地的实现方案:
方案1:使用内置受保护配置功能(无需修改业务代码)
该方案是.NET官方提供的配置加密能力,加密后程序可自动解密读取值,不需要额外编写解密逻辑,仅加密后的配置仅能在当前加密的机器/用户环境下正常读取:
- 首先找到对应版本的aspnet_regiis工具,64位程序默认路径为
C:\Windows\Microsoft.NET\Framework64\v4.0.30319,32位程序则进入C:\Windows\Microsoft.NET\Framework\v4.0.30319目录 - 打开管理员权限的命令提示符,cd进入上述aspnet_regiis所在目录
- 若你的应用配置文件是exe.config格式(比如MyApp.exe.config),先临时将文件名修改为
web.config,加密完成后再改回原名 - 执行加密命令:
注意第二个参数仅需填写文件夹路径,不要包含配置文件名aspnet_regiis -pef "userSettings/MYdata.Properties.Settings" "你的配置文件所在文件夹的全路径" - 若后续需要解密修改配置,执行解密命令即可:
aspnet_regiis -pdf "userSettings/MYdata.Properties.Settings" "你的配置文件所在文件夹的全路径"
方案2:手动加密密码值(支持跨机器部署)
如果需要打包部署到不同机器使用,可以选择手动加密密码值,仅需要修改读取密码的业务逻辑:
- 自行实现AES等对称加密算法的加密、解密工具方法
- 先本地运行加密方法,将明文密码
Data#Dat加密为密文字符串,替换配置文件中Password节点的value值 - 在程序中读取Password配置的位置,调用对应的解密方法将密文还原为明文后再使用
- 加密使用的密钥不要硬编码在程序代码中,可存储在系统凭据管理器或做代码混淆避免反编译泄露
内容的提问来源于stack exchange,提问作者Saluran Sains
相关产品推荐
相关产品推荐

