提问人:tharpa 提问时间:11/17/2023 最后编辑:tharpa 更新时间:11/17/2023 访问量:55
VerifyHashedPassword() 使用什么算法?
What algorithm does VerifyHashedPassword() use?
问:
在 C# 中,有一个名为 .这不需要哈希算法。在 T-SQL 中,有一种方法,它要求传递哈希算法。VerifyHashedPassword()
HashBytes()
我正在更新程序,需要验证用户的密码。我有哈希密码表,但我不知道使用了什么算法,只知道 C# 代码使用 VerifyHashedPassword,它不采用算法参数。
我可以将什么算法传递给 HashBytes() 以匹配 VerifyHashedPassword 使用的方法?
编辑:很明显,建议的问题没有回答我的问题。很难理解为什么有人会认为它确实如此。
答:
您可能无法使用 SQL 方法来复制该过程,因为您不知道盐。如果你确实知道盐,那么现代算法的全部意义在于它们是可调的,而你不知道使用的调谐因子。即使您知道调整因素,更新的可调算法也不受 支持。HashBytes()
HashBytes()
但你想要的信息是它使用 Rfc2898DerivedBytes
类型,该类型在文档中包含以下内容:
通过使用基于 HMACSHA1 的伪随机数生成器实现基于密码的密钥派生功能 PBKDF2。
以这种方式散列的密码输出还将包括随机盐作为结果的一部分。然后,获取此值,并将盐(以及任何其他元数据,如调整因子)与此输入值分开,并使用它来复制尝试密码的原始哈希过程。然后它可以比较哈希值以给出有效/无效的结果。VerifyHashedPassword()
我正在更新程序,需要验证用户的密码。我有哈希密码表,但我不知道使用了什么算法,只知道 C# 代码使用 VerifyHashedPassword()
如果可能,应继续使用该过程。密码验证通常不是在数据库本身中完成的。
评论