散列用户密码 - Identity Server

Hashing user password - Identity Server

我目前正在使用 Identity Server 4,目前当用户登录时,我需要散列他们提供的密码,然后与存储在数据库中的密码(也经过散列)进行比较

经过一番搜索,我被链接到 Identity Server 中的 PasswordHasher 来处理这个问题:

  var _hasher = new PasswordHasher<User>();
  var hashpassword = _hasher.HashPassword(user, context.Password);

User 是我继承自 IdentityUser 的自定义 class,但是,当根据数据库中的密码检查散列密码时,散列完全不同,我已经仔细检查了密码,我可以确认它是正确的。

谁能告诉我为什么我看到的哈希与数据库中的不同?

每次使用 PasswordHasher<T>.HashPassword 对密码进行哈希运算时,您都会得到完全不同的结果,因为 salt

要验证此类散列加盐密码,请使用给定的方法 IPasswordHasher<T>.VerifyPassword