在我们的应用程序中,我们有很多敏感的配置设置,我们将它们存储在一个再次加密的 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/