散列用户密码 - 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
。
我目前正在使用 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
。