c# - 在 .NET C# 中存储加密 key 的最佳方式

标签 c# .net security encryption

在我们的应用程序中,我们有很多敏感的配置设置,我们将它们存储在一个再次加密的 xml 文件中。

此安全文件必须在运行时解密并读取配置值。但是出现了一个问题,即 key 和初始化向量是硬编码在代码中的,因此任何人都可以使用 Reflector 读取它。

在 .NET 中存储加密 key 以便没有人可以使用 Reflector 读取它们的最佳方法是什么?

最佳答案

如果您想保护您的数据免受其他用户的侵害。看看 ProtectedData类。

(免责声明:此答案未涵盖保护您的数据以创建复制保护方案)。

此类使用 Windows 的 DPAPI,在用户或机器级别加密和解密数据。

使用 ProtectedData/DPAPI 可以让您免于处理 key 和自行保护数据。并且您可以选择保护当前用户的数据。同一域的用户可以从不同的计算机读取数据。

如果您想创建自己的 key 。您可以为每个用户/机器创建一个 key ,并将此 key 存储在注册表中。因为可以保护注册表,所以只有当前用户可以读回 key 。我知道注册表有坏业,但实际上非常擅长存储这样的数据。

PS:不要将 IV 放在您的代码中。每次都新建一个IV,放在数据前面。

关于c# - 在 .NET C# 中存储加密 key 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4967325/

相关文章:

c# - 如何将基于 'using' 的 GC 生命周期打开为基于 'create-dispose' 的生命周期?

PHP 7 OAuthProvider VS random_bytes token 生成

angular - 'Access-Control-Allow-Origin' header 的值 'http://localhost:4200' 不等于提供的来源

c# - 未添加实体

c# - 在Gridview中上传文件,完成后在同一行显示

c# - 在 DataGridView 中换行

c# - 如何在.net中以编程方式从现有资源创建cloudformation堆栈?

.net - 如果类别不存在,PerformanceCounterCategory.Exists 会非常慢

c# - 命名空间 System.Windows.Automation 的用途是什么

java - 在客户端服务器模型之间使用公钥和私钥加密是否明智?