VerifyHashedPassword() 使用什么算法?

问题描述 投票:0回答:1

在 C# 中,有一个名为

VerifyHashedPassword()
的方法。这不需要哈希算法。在T-SQL中,有一个方法
HashBytes()
,它确实需要你通过哈希算法。

我正在更新一个程序,我需要验证用户的密码。我有哈希密码表,但我不知道使用了什么算法,只知道 C# 代码使用VerifyHashedPassword,它不带算法参数。

我可以将什么算法传递给 HashBytes() 来匹配VerifyHashedPassword 使用的算法?

c# sql-server t-sql hash password-hash
1个回答
0
投票

您可能不能能够使用SQL

HashBytes()
方法来复制该过程,因为您不知道盐。如果您确实知道盐,那么现代算法的全部要点是它们是可调的,并且您不知道所使用的调整因子。即使您知道调整因子,
HashBytes()
尚不支持较新的可调算法。

但是您想要的信息是它使用

Rfc2898DerivedBytes
类型,其中包括在文档中:

通过使用基于 HMACSHA1 的伪随机数生成器,实现基于密码的密钥派生功能 PBKDF2。

以这种方式散列的密码的输出还将包含随机盐作为结果的一部分。然后,

VerifyHashedPassword()
获取该值并将盐(以及任何其他元数据,如调整因子)与该输入值分开,并使用它来复制尝试密码的原始哈希过程。然后它可以比较哈希值以给出有效/无效结果。


我正在更新一个程序,我需要验证用户的密码。我有哈希密码表,但我不知道使用了什么算法,只知道 C# 代码使用了VerifyHashedPassword()

如果可能的话,您应该继续使用该流程。密码验证 通常不在数据库本身中完成

© www.soinside.com 2019 - 2024. All rights reserved.