Asp.net 身份加密密码

Asp.net identity encrypt password

我正在使用 asp.net 身份并且需要加密密码以将其与数据库中存在的 PasswordHash 进行比较。

这是我的代码:

 var passHash = new PasswordHasher().HashPassword("123456");
 using (EFDbContext _db = new EFDbContext())
 {
    var users = _db.Users.Where(u => u.PasswordHash == passHash);
 }

我得到一个空结果,但数据库中存在密码为“123456”的用户

通常使用 PasswordHasher class 中的 VerifyHashedPassword 方法比较密码哈希值,这就是您的代码无法正常工作的原因,请检查此 link:

https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.passwordhasher.verifyhashedpassword(v=vs.108).aspx#M:Microsoft.AspNet.Identity.PasswordHasher.VerifyHashedPassword(System.String,System.String)

如果您必须使用该密码检索用户,我认为您不能使用 EF(它不能将 VerifyHashedPassword 方法转换为 sql 查询),您必须检索所有用户并比较每个用户的密码。

如果您只想检索单个用户,我会通过电子邮件进行搜索并使用 VerifyHashedPassword 比较密码。