C# 配置文件加密解密:最简便的实现方案
在C#项目中保护敏感配置信息如数据库连接字符串、API密钥等至关重要。下面介绍一种最简便、最实用的配置文件保护方法无需复杂依赖直接利用.NET框架内置功能。方案核心使用Windows数据保护API (DPAPI) 或 托管封装1. 最简单实现使用ProtectedData类DPAPI封装DPAPI是Windows内置的数据保护接口无需管理密钥非常适合单机应用。using System.Security.Cryptography; using System.Text; public static class SimpleConfigProtector { // 加密字符串 public static string Encrypt(string plainText) { byte[] plainBytes Encoding.UTF8.GetBytes(plainText); byte[] encryptedBytes ProtectedData.Protect( plainBytes, entropy: null, // 可选的附加熵值增加安全性 scope: DataProtectionScope.CurrentUser // 或 LocalMachine ); return Convert.ToBase64String(encryptedBytes); } // 解密字符串 public static string Decrypt(string encryptedText) { byte[] encryptedBytes Convert.FromBase64String(encryptedText); byte[] plainBytes ProtectedData.Unprotect( encryptedBytes, entropy: null, scope: DataProtectionScope.CurrentUser ); return Encoding.UTF8.GetString(plainBytes); } }2. 配置文件集成方案appsettings.json (原始){ ConnectionStrings: { DefaultConnection: Serverlocalhost;DatabaseMyDB;Usersa;PasswordMyPass123; }, ApiKey: abc123def456 }appsettings.json (加密后){ ConnectionStrings: { DefaultConnection: AQAAANCMnd8BFdERjHoAwE/ClsBAAAAAA0IAAAAAAA... (加密文本) }, ApiKey: AQAAANCMnd8BFdERjHoAwE/ClsBAAAAAA0IAAAAAAA... }配置读取类public class AppSettings { private readonly IConfiguration _configuration; public AppSettings(IConfiguration configuration) { _configuration configuration; } public string GetConnectionString() { var encrypted _configuration.GetConnectionString(DefaultConnection); return SimpleConfigProtector.Decrypt(encrypted); } public string GetApiKey() { var encrypted _configuration[ApiKey]; return SimpleConfigProtector.Decrypt(encrypted); } }3. 一键加密工具控制台应用// ConfigEncryptor.cs class Program { static void Main(string[] args) { Console.WriteLine( 配置文件加密工具 ); Console.Write(输入要加密的文本: ); string plainText Console.ReadLine(); string encrypted SimpleConfigProtector.Encrypt(plainText); Console.WriteLine($加密结果: {encrypted}); Console.Write(是否测试解密? (y/n): ); if (Console.ReadKey().Key ConsoleKey.Y) { string decrypted SimpleConfigProtector.Decrypt(encrypted); Console.WriteLine($\n解密结果: {decrypted}); } } }方案优势与注意事项✅ 优点零密钥管理DPAPI自动处理密钥存储按用户/机器隔离CurrentUser范围防止其他用户解密无需外部依赖仅需System.Security.Cryptography防篡改加密后的Base64字符串无法直接解读⚠️ 注意事项DataProtectionScope选项CurrentUser只有当前登录用户可解密LocalMachine本机所有用户可解密安全性较低部署限制DPAPI加密的内容不能跨计算机解密如需多服务器部署考虑使用证书加密或Azure Key Vault加密提示首次运行时可自动加密配置文件// 启动时检查并加密配置 if (!IsEncrypted(configValue)) { string encrypted SimpleConfigProtector.Encrypt(configValue); // 更新配置文件谨慎操作 }备选方案如需跨平台/跨机器加密如果应用需部署到多台服务器可采用基于证书的加密public static class CertificateProtector { public static string EncryptWithCertificate(string plainText, X509Certificate2 cert) { using RSA rsa cert.GetRSAPublicKey(); byte[] plainBytes Encoding.UTF8.GetBytes(plainText); byte[] encryptedBytes rsa.Encrypt(plainBytes, RSAEncryptionPadding.OaepSHA256); return Convert.ToBase64String(encryptedBytes); } public static string DecryptWithCertificate(string encryptedText, X509Certificate2 cert) { using RSA rsa cert.GetRSAPrivateKey(); byte[] encryptedBytes Convert.FromBase64String(encryptedText); byte[] plainBytes rsa.Decrypt(encryptedBytes, RSAEncryptionPadding.OaepSHA256); return Encoding.UTF8.GetString(plainBytes); } }最佳实践建议敏感配置项仅加密真正敏感的数据密码、密钥普通配置保持明文开发/生产分离开发环境可不加密生产环境强制加密备份原文加密前备份原始配置防止加密失败使用配置中心大型系统建议使用Azure App Configuration/AWS Parameter Store总结对于大多数C#应用DPAPI方案是最简单有效的配置保护方案开发简单仅需10行核心代码维护方便无额外密钥管理负担安全性足满足大部分应用需求无缝集成与ASP.NET Core配置系统完全兼容只需将敏感配置项替换为加密文本在读取时自动解密即可实现防改写、防窥视的安全目标。

相关新闻

5 分钟用 Amazon Bedrock 搭一个 AI Agent:从零到能干活

5 分钟用 Amazon Bedrock 搭一个 AI Agent:从零到能干活

5 分钟用 Amazon Bedrock 搭一个 AI Agent:从零到能干活 最近打开掘金,热榜一半都是 AI Agent 相关的内容——OpenClaw 拆解、MCP 协议、Function Call 实战... 概念已经讲了不少,但真正从零搭过一个完整 Agent 的人可能不多。 今天换个思路…

2026/7/15 7:40:20 阅读更多 →
pdf转excel,表格一键提取的方法分享,数据转换不乱格式

pdf转excel,表格一键提取的方法分享,数据转换不乱格式

pdf转excel,表格一键提取的方法分享,数据转换不乱格式在日常工作中,很多 PDF 文件里包含大量表格数据,例如财务报表、销售记录、数据统计表等。如果想将这些表格导入 Excel 进行计算和分析,传统做法往往是手动复制粘贴&#xff0c…

2026/7/13 21:23:11 阅读更多 →
多线程并发锁的方案

多线程并发锁的方案

C语言的多线程并发锁方案,主要依赖于POSIX线程库(pthread)。互斥锁核心行为:当线程无法获取锁时,会陷入睡眠,让出CPU,直到锁可用时被唤醒。适用场景:通用场景,特别是临界…

2026/7/13 18:46:41 阅读更多 →

最新新闻

【SpringBoot】【Starter】----SpringBoot Starter 全解:原理、场景、实战自定义 Starter

【SpringBoot】【Starter】----SpringBoot Starter 全解:原理、场景、实战自定义 Starter

文章目录一、什么是 SpringBoot Starter📦1. 定义2. 核心两大组成二、Starter 核心作用 ✨三、适用业务场景 🎯四、Starter 底层工作原理 🧠4.1 整体流程Mermaid流程图(带配色)4.2 关键核心注解说明4.3 文件机制五、实…

2026/7/15 19:02:34 阅读更多 →
中国行政区划边界的历史地理逻辑与治理智慧

中国行政区划边界的历史地理逻辑与治理智慧

如果你打开中国地图,会发现一个有趣的现象:各省之间的边界线几乎没有一条是笔直的。这些蜿蜒曲折的线条背后,隐藏着怎样的历史逻辑和地理智慧?很多人以为行政区划只是简单的几何划分,但实际上,这些看似随意…

2026/7/15 18:58:33 阅读更多 →
如何高效使用Uncle小说PC版:3步快速上手完整指南

如何高效使用Uncle小说PC版:3步快速上手完整指南

如何高效使用Uncle小说PC版:3步快速上手完整指南 【免费下载链接】uncle-novel 📖 Uncle小说,PC版,一个全网小说下载器及阅读器,目录解析与书源结合,支持有声小说与文本小说,可下载mobi、epub、…

2026/7/15 18:58:32 阅读更多 →
ChatGPT-Image2图像理解工具:从原理到实践的全方位指南

ChatGPT-Image2图像理解工具:从原理到实践的全方位指南

1. 先搞清楚这个工具到底能做什么 看到“ChatGPT-Image2”这个名字,很多人第一反应可能是图像生成或编辑工具,但实际它更偏向于图像内容理解和多模态对话。简单说,它能让你上传一张图片,然后针对图片内容进行问答、分析、描述或执…

2026/7/15 18:56:31 阅读更多 →
PoE供电标准演进与实战选型指南

PoE供电标准演进与实战选型指南

1. PoE技术的前世今生:从12W到90W的进化之路第一次接触PoE是在2014年部署公司无线AP时。当时看着网线既能传数据又能供电,感觉像变魔术——直到某台AP频繁掉线,才发现用的是非标PoE交换机。这段经历让我深刻认识到:选错供电标准&a…

2026/7/15 18:56:31 阅读更多 →
2026年企业级数字人AI服务商TOP5盘点:覆盖全场景商用落地需求

2026年企业级数字人AI服务商TOP5盘点:覆盖全场景商用落地需求

引文/摘要:AI数字人服务商数量已超百家,选型失误意味着时间与预算的双重消耗。本文基于2026年Q2对8款主流平台的实测对比,从克隆效率、制作成本、功能完整度、合规保障四个维度,盘点五家覆盖不同商用场景的数字人AI服务商&#xf…

2026/7/15 18:54:30 阅读更多 →

日新闻

YOLO11 改进 - 特征融合 | STFFM空间时间特征融合模块,强化时空互补、抑制噪声,助力小目标检测高效涨点

YOLO11 改进 - 特征融合 | STFFM空间时间特征融合模块,强化时空互补、抑制噪声,助力小目标检测高效涨点

前言 本文介绍了面向红外小目标检测的时空特征融合模块——STFFM,用于增强复杂背景下目标与噪声、杂波的区分能力。该方法通过拼接空间特征与时间/运动特征,并结合通道注意力、空间注意力和残差增强机制,实现对关键语义通道与疑似目标区域的…

2026/7/15 0:01:00 阅读更多 →
YOLO26 改进 - 特征融合 | STFFM空间时间特征融合模块,强化时空互补、抑制噪声,助力小目标检测高效涨点

YOLO26 改进 - 特征融合 | STFFM空间时间特征融合模块,强化时空互补、抑制噪声,助力小目标检测高效涨点

前言 本文介绍了面向复杂背景小目标检测的时空特征融合模块——STFFM。该模块通过空间分支与时间/运动分支的特征拼接,引入通道注意力和空间注意力对融合特征进行自适应筛选,并结合残差增强与通道压缩,突出目标区域、抑制背景噪声。我们将 S…

2026/7/15 0:01:00 阅读更多 →
行星减速机为什么能提高扭矩?从功率守恒到输出扭矩校核

行星减速机为什么能提高扭矩?从功率守恒到输出扭矩校核

一、为什么减速以后扭矩会增大 旋转机械的功率、转速和扭矩之间存在以下关系: T 9550 P n 其中: T为扭矩,单位Nm; P为功率,单位kW; n为转速,单位r/min。 在功率基本不变的情况下:…

2026/7/15 0:03:00 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/14 16:53:23 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/14 14:00:13 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/15 17:52:08 阅读更多 →

月新闻