C# 使用特定的salt生成密码

C# 使用特定的salt生成密码,c#,asp.net-core-2.0,identityserver4,asp.net-core-webapi,C#,Asp.net Core 2.0,Identityserver4,Asp.net Core Webapi,我们正在使用Identity Server 4进行用户身份验证 我需要添加一个功能来限制用户重复他们最后5个密码中的一个 要对照新密码的历史记录检查新密码,我认为最好的方法是(一次检查一个历史密码)使用历史salt对新密码进行哈希运算,然后比较输出 我可以从每一份历史食盐的杂烩中得到每一份,但我不知道怎么做 用一种特殊的盐做杂烩 生成哈希以与历史哈希进行比较 我已经查过了那里的文件,但在那里找不到任何相关的东西 我走对了吗?如果是,我如何做上述工作?如果没有,我如何检查以前没有使用过新密码?(无

我们正在使用Identity Server 4进行用户身份验证

我需要添加一个功能来限制用户重复他们最后5个密码中的一个

要对照新密码的历史记录检查新密码,我认为最好的方法是(一次检查一个历史密码)使用历史salt对新密码进行哈希运算,然后比较输出

我可以从每一份历史食盐的杂烩中得到每一份,但我不知道怎么做

  • 用一种特殊的盐做杂烩
  • 生成哈希以与历史哈希进行比较
  • 我已经查过了那里的文件,但在那里找不到任何相关的东西


    我走对了吗?如果是,我如何做上述工作?如果没有,我如何检查以前没有使用过新密码?(无论如何,在过去5年内)

    IdentityServer 4不会对用户密码或身份验证执行任何操作。你是在问ASP.Net身份吗?如果是这样,我建议深入研究Github中的代码,并覆盖您需要的内容


    至于一般做法;我会使用一个与用户特定的、不可变的salt混合的散列,但只对单独存储在不同表中的历史密码使用该散列。他们当前的密码应该像平常一样使用随机密码

    这有用吗?这很相似,但与IdentityServer4无关。我真的需要知道IdentityServer4是如何准确地生成哈希的,例如,如何应用salt,哈希算法是什么(我假设SHA256),等等。Re:you first para,谢谢你,我的假设是错误的。我将查看如何通过ASP.Net标识创建哈希。另外,目前所有的salt都是相同的值,所以我假设这是由于某个地方的设置。我刚刚找到了以下内容,可以用于我需要的:
    Microsoft.AspNetCore.Identity.PasswordVerificationResult VerifyHashedPassword(TUser user,string hashedPassword,string providedPassword)