在我们的应用程序中,我们有很多敏感的配置设置,我们将这些设置存储在一个xml文件中,该文件再次加密.
必须在运行时解密此安全文件并读取配置值.但是出现了一个问题,密钥和初始化向量在代码中是硬编码的,因此任何人都可以使用Reflector读取它.
在.NET中存储加密密钥以便没有人可以使用Reflector读取它们的最佳方式是什么?
在我们的应用程序中,我们有很多敏感的配置设置,我们将这些设置存储在一个xml文件中,该文件再次加密.
必须在运行时解密此安全文件并读取配置值.但是出现了一个问题,密钥和初始化向量在代码中是硬编码的,因此任何人都可以使用Reflector读取它.
在.NET中存储加密密钥以便没有人可以使用Reflector读取它们的最佳方式是什么?
如果你想保护你的数据免受其他用户的攻击.看看ProtectedData班.
(免责声明:保护您的数据以创建版权保护方案不在此答案中).
此类使用Windows中的DPAPI在用户或计算机级别加密和解密数据.
使用ProtectedData/DPAPI可以让您不必亲自处理密钥和保护数据.您可以 Select 为当前用户保护数据.相同的域用户可以从不同的计算机读取数据.
如果您想创建自己的密钥.您可以 for each 用户/机器创建一个密钥,并将该密钥存储在注册表中.因为注册表是安全的,所以只有当前用户才能读回密钥.我知道注册表有不好的业力,但实际上它非常擅长存储这样的数据.
注:不要把静脉注射放在你的密码里.每次创建一个新的IV,并将其放在数据前面.