首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ASP.NET中,哪种哈希算法可以用来存储数据库中的密码?

在ASP.NET中,哪种哈希算法可以用来存储数据库中的密码?
EN

Stack Overflow用户
提问于 2014-10-11 15:06:33
回答 1查看 1.1K关注 0票数 0

我正在为一家金融机构开发ASP.NET网络应用程序,通过身份验证的用户可以访问它。需要对每个用户的密码进行加密,这样数据库管理员就不能访问任何用户的密码。我经历过各种类型的加密和哈希算法,但不确定哪种算法最适合我的需求。

EN

回答 1

Stack Overflow用户

发布于 2014-10-12 11:58:00

尽可能防止将密码全部存储在一起,例如使用Windows身份验证。如果这是不可能的,请使用行业最佳实践来存储密码。这意味着你应该:

  • 使用密码散列(而不是加密)
  • 向散列中添加一个盐分
  • 使用计算密集型散列算法。

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

因此,对于密码哈希,这实际上意味着使用MD5和SHA (即使使用盐渍)的密码散列是非常无用的,因为这些算法是按速度优化的,这允许黑客计算每秒2300万盐散列(蛮力)。

一些著名的计算密集散列算法是PBKDF2、Bcrypt、PBMAC和scrypt.在.NET中,有一个名为Rfc2898DeriveBytes的PBKDF2实现。下面是一个很好的例子的使用Rfc2898DeriveBytes (完全与可配置的计算强度,这允许这种方法允许承受不断增加的计算机计算能力)。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26316047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档