You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 7升级后PasswordHasher哈希结果不一致,如何恢复.NET 6算法?

解决.NET 7中PasswordHasher与.NET 6哈希结果不一致的问题

核心解决思路是通过完全对齐.NET 6的配置参数,让.NET 7的PasswordHasher复用旧版哈希逻辑,具体操作如下:

1. 确保配置完全匹配.NET 6

.NET 7的PasswordHasher默认迭代数已从10000提升至100000,但只要显式指定原配置参数,就能恢复.NET 6的哈希行为。保持PasswordHasher实例化代码与.NET 6完全一致:

private static readonly IPasswordHasher<object> s_passwordHasher = new PasswordHasher<object>(
    Options.Create(new PasswordHasherOptions
    {
        CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV3,
        IterationCount = 10000
    }));

2. 检查验证方法的参数正确性

确认PasswordHelper.VerifyHashedPassword方法的参数传递顺序无误,必须严格遵循:用户对象(可传null)、存储的哈希值、输入的明文密码。示例实现如下:

public static PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string plainPassword)
{
    return s_passwordHasher.VerifyHashedPassword(null, hashedPassword, plainPassword);
}

3. 额外排查点

  • 确认升级过程中未修改哈希值的存储逻辑(如编码转换、字符串截断、额外加密等)
  • 检查项目中是否有全局DI配置覆盖了PasswordHasherOptions的默认值,确保局部配置优先级更高

按上述配置调整后,.NET 7的PasswordHasher会使用与.NET 6完全一致的PBKDF2算法、迭代数及兼容性模式,旧哈希值的验证结果将恢复为Success。

内容的提问来源于stack exchange,提问作者Perrier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:26:00