gpt4 book ai didi

asp.net - ASP.NET 中可用于在数据库中存储密码的最佳哈希算法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:25:36 27 4
gpt4 key购买 nike

我正在为一家金融机构开发可供经过身份验证的用户访问的 ASP.NET Web 应用程序。作为一项要求,每个用户的密码都需要加密,这样数据库管理员就无法访问任何用户的密码。我已经使用过各种类型的加密和哈希算法,但不确定哪种最适合我的要求。

最佳答案

尽可能避免将密码存储在一起,例如使用 Windows 身份验证。如果不可能,请使用行业最佳实践来存储密码。这意味着您应该:

  • 使用密码散列(不是加密)
  • 在散列中加盐
  • 使用计算密集型哈希算法。

存储密码的最大危险在于,当有人闯入您的系统(或您的 DBA 窃取密码)时,成千上万用户的密码会泄露。尽管您可以知道系统中每个用户的密码,但用户通常会一遍又一遍地使用相同的密码,这意味着当用户的密码被泄露时,用户将面临风险。当然,重复使用密码当然是不好的做法,这是用户所做的,我们的工作是通过做我们力所能及的任何事情来至少将用户的风险降到最低。不要忘记,如果不这样做,甚至可能导致您的公司被起诉。这发生在 LinkedIn 上。

因此对于密码散列,这实际上意味着使用 MD5 和 SHA(即使加盐)的密码散列非常无用,因为这些算法针对速度进行了优化,这允许黑客每秒计算 23 亿个加盐哈希(蛮力)。

一些著名的计算密集型哈希算法是 PBKDF2、Bcrypt、PBMAC 和 scrypt。在 .NET 中有一个名为 Rfc2898DeriveBytes 的 PBKDF2 实现. Here's a good example使用 Rfc2898DeriveBytes(具有可配置的计算强度,这使得该方法能够承受计算机不断增加的计算能力)。

使用一些实现最佳实践的知名框架也可能是个好主意。 @trailmax 已经建议使用 PBKDF2 的 AspNet Identity 框架。但是,请避免使用 ASP.NET 的 SqlMembershipProvider,因为它默认使用 SHA,并且实际上很难重新配置它以使用安全方法。

关于asp.net - ASP.NET 中可用于在数据库中存储密码的最佳哈希算法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26316047/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com