c# - 使用 ASP.NET MVC 3 散列密码

标签 c# asp.net-mvc-3 passwords hash password-protection

我现在正在尝试找出为我的 ASP.NET MVC 3 应用程序散列密码的最佳方法。据我所知,最好使用给定的密码和随机盐,然后将散列密码和盐一起存储。我的问题是这不会使随机盐毫无意义吗?我的意思是散列密码的原因是因为如果有人进入你的数据库,他们没有普通密码,而盐使得反转散列以获取密码变得更加困难,但如果我存储散列与密码,salt 的意义是什么(我对散列的知识非常有限,所以我的想法可能完全偏离基础)。

我的第二个问题是哪种哈希方法最好用?我读到 MD5(这是我一直使用的)非常容易破解。我听说 bcrypt/sha512 非常好。应该使用哪一个?我知道 C# 默认带有 sha512 哈希。据我所知,bcrypt 不包含在 .NET 库中,是否有适用于 C# 和 bcrypt 的好的库?

最佳答案

不需要将盐存储在不同的位置,您应该始终假设攻击者知道盐,并且其目的不是作为额外的密码!!!!

在 .NET 中,此 API 将完成您需要的一切,它将创建大的加密随机盐以及 HMACSHA512 散列和在每次 AES 加密传递之前通过字节交换进行 key 拉伸(stretch):)

http://sourceforge.net/projects/pwdtknet/

关于c# - 使用 ASP.NET MVC 3 散列密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6396896/

相关文章:

ruby-on-rails - 如何在 Ruby on Rails 中使用 Devise 验证密码强度?

c# - XmlDocument 与 XmlWriter

c# - 如何处理所有 Controller 上的空模型 aspnet core c#

c# - 使 View 部分化

linux - 如何从 Active Directory 获取用户密码到期日期?

ruby - Ruby 中密码检查的递归循环

c# - WCF 服务调用失败...我的配置文件有什么问题?

c# - 使用C#中的ExecuteScalar访问列名?

asp.net-mvc - EF4 试图重新创建数据库,即使它已经存在?

mysql - 使用连接器 6.4.3 使用 mvc3 和 MySQL