我有一个 .net 应用程序,它将散列密码存储在 sql server 数据库中。
密码使用盐进行散列,该盐与散列密码一起存储在数据库中。
作为额外的安全层,我使用另一个站点范围的密钥对哈希密码进行哈希处理,出于安全原因,该密钥未存储在数据库服务器上。由于系统是负载平衡的,我应该将站点范围的密钥存储在哪里?将它的副本存储在我的每个 .net 应用程序的配置中(所有服务器上的值相同)。
第二个问题是,存储密码的推荐散列机制是什么?
我倾向于使用 bcrypt 存储密码。它的 .NET 实现是BCrypt.NET,因为此时它不在 .NET 框架中。您不想使用像 MD5 这样的通用哈希函数。另一种常见的算法是PBKDF2,但我个人没有在 .NET 中使用过它。