Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加密密钥使用什么以及存储在哪里?_C#_.net_Asp.net Mvc_Security_Encryption - Fatal编程技术网

C# 加密密钥使用什么以及存储在哪里?

C# 加密密钥使用什么以及存储在哪里?,c#,.net,asp.net-mvc,security,encryption,C#,.net,Asp.net Mvc,Security,Encryption,我正在使用本QA中提供的解决方案: 然而,我看到一些人将密钥(随机“密码”)作为字段存储在代码中,但我想知道这是否真的是个好主意。 该溶液中使用的盐也是课堂上的一个字段 有些人建议使用用户密码,但由于这可能会改变,我认为这不是一个好主意 所以我的问题是。 将盐作为字段存储在类中,如上述解决方案中所示,可以吗? 我应该使用什么作为加密/解密密钥?(所有用户的一些随机密钥)? 我应该把这把钥匙存放在哪里?在课堂上作为一个领域?在数据库里 谢谢 我个人会将密钥存储在应用程序的配置文件中。 app.co

我正在使用本QA中提供的解决方案:

然而,我看到一些人将密钥(随机“密码”)作为字段存储在代码中,但我想知道这是否真的是个好主意。 该溶液中使用的盐也是课堂上的一个字段

有些人建议使用用户密码,但由于这可能会改变,我认为这不是一个好主意

所以我的问题是。 将盐作为字段存储在类中,如上述解决方案中所示,可以吗? 我应该使用什么作为加密/解密密钥?(所有用户的一些随机密钥)? 我应该把这把钥匙存放在哪里?在课堂上作为一个领域?在数据库里


谢谢

我个人会将密钥存储在应用程序的配置文件中。 app.config文件或web.config文件(取决于它是桌面还是web应用)


我会使用一些随机字符串生成器生成密钥

您是否预计必须经常更换钥匙


另外——对于web.config的生产转换,我建议将加密密钥保留在SCM解决方案(GIT、SVN等)之外。我将我们所有人都保存在一个单独的KeyPass数据库中。

这不是和将其存储在代码中一样“安全”(或不安全)吗?我不明白为什么我会在任何时候更改密钥。将其存储在代码中意味着与您一起处理代码的任何人都会知道加密密钥是什么。通过将其移到config,您可以对其他可能正在处理该项目的开发人员隐藏它,但不需要访问生产加密密钥。它还使您可以更轻松地在不同的环境中使用不同的密钥,或者在您认为密钥可能以某种方式受损时更改密钥。谢谢,我决定将密钥部分放在代码中,部分放在读取后从服务器上删除的文件中,并将合成的密钥保存在静态字段(内存中)中@O.O-有趣的阅读,绝对是很好的复习我的微软安全最佳实践。您如何看待web配置中ASP.NET Forms Auth加密密钥(机器密钥)的默认存储?也许是微软的疏忽?@JeremyNoonan-我认为M$的观点是,如果您在web.config或app.config中存储敏感信息,您应该加密该配置部分,并尝试通过权限或w/e限制对该文件的访问。
<add key="EncryptionKey" value="MY_KEY" />