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

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

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

推荐答案

如果你想保护你的数据免受其他用户的攻击.看看ProtectedData班.

(免责声明:保护您的数据以创建版权保护方案不在此答案中).

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

使用ProtectedData/DPAPI可以让您不必亲自处理密钥和保护数据.您可以 Select 为当前用户保护数据.相同的域用户可以从不同的计算机读取数据.

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

注:不要把静脉注射放在你的密码里.每次创建一个新的IV,并将其放在数据前面.

.net相关问答推荐

等待时 Blazor 服务器按钮刷新

为什么解码后的字节数组与原始字节数组不同?

如何使用 awslocal 通过 localstack 中的 cloudwatch events/eventbridge 触发 lambda

如何规范机器之间连字符的排序顺序?

AsyncLocal 的语义与逻辑调用上下文有何不同?

在c#中计算中位数

使用 .NET 在 Windows 中创建弹出式 toastr 通知

.Net 中的 Decimal.One、Decimal.Zero、Decimal.MinusOne 的用途是什么

.Net 中的 Int128?

序列化私有成员数据

DBNull 的意义何在?

如何异步 Files.ReadAllLines 并等待结果?

如何将 WebResponse.GetResponseStream 返回转换为字符串?

POCO 是什么意思?

有没有像样的 C# 分析器?

在关闭警告中访问 foreach 变量

表单不响应 KeyDown 事件

通过继承扩展枚举

有没有一种简单的方法来判断 .NET Framework 版本?

按字母顺序对列表进行排序