我现在正在尝试找出为我的 ASP.NET MVC 3 应用程序散列密码的最佳方法。据我所知,最好使用给定的密码和随机盐,然后将散列密码和盐一起存储。我的问题是这不会使随机盐毫无意义吗?我的意思是散列密码的原因是因为如果有人进入你的数据库,他们没有普通密码,而盐使得反转散列以获取密码变得更加困难,但如果我存储散列与密码,salt 的意义是什么(我对散列的知识非常有限,所以我的想法可能完全偏离基础)。
我的第二个问题是哪种哈希方法最好用?我读到 MD5(这是我一直使用的)非常容易破解。我听说 bcrypt/sha512 非常好。应该使用哪一个?我知道 C# 默认带有 sha512 哈希。据我所知,bcrypt 不包含在 .NET 库中,是否有适用于 C# 和 bcrypt 的好的库?
最佳答案
不需要将盐存储在不同的位置,您应该始终假设攻击者知道盐,并且其目的不是作为额外的密码!!!!
在 .NET 中,此 API 将完成您需要的一切,它将创建大的加密随机盐以及 HMACSHA512 散列和在每次 AES 加密传递之前通过字节交换进行 key 拉伸(stretch):)
关于c# - 使用 ASP.NET MVC 3 散列密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6396896/