Avalonia应用加密配置文件需借助.NET加密类而非框架内置能力,推荐AES-GCM对JSON序列化内容加解密并安全管理密钥,或Windows下用ProtectedData实现免密钥保护。
在 Avalonia 应用中加密配置文件,核心不是 Avalonia 本身提供加解密能力(它不内置加密 API),而是结合 .NET 的标准加密类(如 Aes、ProtectedData)对配置文件内容进行保护。关键在于:配置读写流程中插入加解密环节,且密钥/保护上下文需安全处理。
适合本地存储、需要跨平台(Windows/macOS/Linux)的场景。推荐用 AES-GCM 模式(带认证,防篡改)或 AES-CBC(需手动管理 IV 和填充)。
System.Text.Json)AesGcm.Encrypt() 加密 JSON 字节,得到密文 + 认证标签config.aes.json)AesGcm.Decrypt(),再反序列化为对象⚠️ 密钥不能硬编码。可由用户口令派生(PBKDF2 + 用户输入)、或从系统凭据库(如 Windows Credential Manager)读取。
若只面向 Windows,System.Security.Cryptography.ProtectedData 是最简方案:无需管理密钥,系统自动绑定当前用户/机器。
ProtectedData.Protect(bytes, optionalEntropy, DataProtectionScope.CurrentUser)
ProtectedData.Unprotect(...)
✅ 优点是零密钥管理;❌ 缺点是无法跨用户/跨机器迁移,macOS/Linux 不支持。
避免在 App 启动早期(如 App.xaml.cs 构造函数)就硬解密——此时 UI 尚未就绪,错误难提示。推荐:
SecureConfigService 单例,延迟初始化ProtectedData
安全失效往往源于细节疏忽:

ToString() 泄露)chmod 600,Windows 设置仅当前用户可读)