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

原文 标签 c# .net security encryption

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

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

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

最佳答案

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

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

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

使用ProtectedData / DPAPI可使您免于处理密钥和保护自己的数据。您可以选择为当前用户保护数据。相同的域用户可以从不同的计算机读取数据。

如果要创建自己的密钥。您可以为每个用户/机器创建一个密钥,并将该密钥存储在注册表中。因为可以保护注册表的安全,所以只有当前用户才能读回密钥。我知道注册表的业力很差,但实际上非常擅长存储这样的数据。

PS:请勿将IV放入您的代码中。每次创建一个新的IV,并将其放在数据前面。

相关文章:

c# - 通用扩展

c# - 将字符串转换为float并对其进行格式化(C#)

c# - LINQ to Entities区分大小写的比较

android - 加载文本时,Android EditText是否可以作为XSS的目标?

security - 为什么要通过SSL对HTTP请求进行数字签名

c# - 如何使用Facebook取消授权回调

c# - 更改PrinterSettings.Copies不起作用

c# - 什么时候使用Thread.Sleep()是明智的?

.net - .net 2.0 Windows应用程序需要提升的UAC权限

asp.net - 如何基于客户端硬件或其他解决方案实现网站安全?