Asp.net Core PasswordHasher<T> issue
本文关键字:gt issue net lt PasswordHasher Asp Core | 更新日期: 2023-09-27 18:15:47
我需要在数据库中存储用户名和密码。密码显然应该加密。我们确实有一些其他网站用来加密密码的旧代码,但我不确定这是否安全。
我正在考虑使用Asp.net Core PasswordHasher类。
我的用法如下:
PasswordHasher<string> pw = new PasswordHasher<string>();
string s1 = pw.HashPassword("Bob", "Apple");
string s2 = pw.HashPassword("Bob", "Apple");
var v1 = pw.VerifyHashedPassword("Bob", s1, "Apple");
var v2 = pw.VerifyHashedPassword("Bob", s2, "Apple");
v1和v2都是成功的,但由于某种原因s1和s2不相等(可能是随机的盐?)。
PasswordHasher是否以任何方式与机器绑定?应用程序将在web farm中运行,因此它应该是机器独立的,并且可以在farm中的所有机器上进行验证。
这是一种加密安全的存储密码的方式吗?
- 每个散列都有一个加密安全盐。
- 在hash中添加盐。
- 没有以任何方式链接到机器。
在底层,它使用PBKDF2, SHA256和10,000次迭代,除非你使用V2兼容性(除非你必须使用V2兼容性)
您可以使用它调用的原始函数,如果您不想拉入Identity,但您应该坚持使用相同的算法和迭代计数。
这是设计;每个散列密码都有一个随机盐。
这可以防止攻击者看到用户是否有相同的密码。