VerifyHashedPassword()使用何种算法?对应HashBytes()应传什么算法?
匹配C#
VerifyHashedPassword()的T-SQL算法说明 你提到的无需传入算法的VerifyHashedPassword(),是ASP.NET Identity框架中PasswordHasher<TUser>类的核心方法,它默认采用的是PBKDF2算法(基于SHA-256哈希函数)。
关键细节:
VerifyHashedPassword()不需要传入算法,是因为生成的哈希字符串本身已经包含了算法标识、盐值、迭代次数等元数据,方法会自动解析这些信息完成验证。- T-SQL的
HashBytes()本身仅提供基础哈希计算,不支持PBKDF2的迭代加盐逻辑。如果要在T-SQL中实现与VerifyHashedPassword()一致的验证,不能直接用HashBytes()单独完成,需要额外处理:- 从现有哈希密码中提取盐值、迭代次数、算法标识(ASP.NET Identity的哈希格式为
{算法标识}.{盐值Base64}.{哈希值Base64}) - 使用
HASHBYTES('SHA2_256', ...)配合循环迭代实现PBKDF2逻辑,或调用自定义CLR函数完成完整的PBKDF2计算
- 从现有哈希密码中提取盐值、迭代次数、算法标识(ASP.NET Identity的哈希格式为
如果仅问对应底层哈希算法,传入'SHA2_256'是PasswordHasher默认配置下的基础哈希函数,但仅用HashBytes('SHA2_256', 明文密码)无法匹配现有哈希,必须结合盐值和迭代次数。
内容的提问来源于stack exchange,提问作者tharpa
相关产品推荐
相关产品推荐

