【问题标题】:BCrypt generating different hashes given the same salt, string, and factorBCrypt 在给定相同的盐、字符串和因子的情况下生成不同的哈希
【发布时间】:2011-09-26 07:40:45
【问题描述】:

使用 BCrypt 的 C# 实现之一对密码进行哈希处理并将其存储到 SQL 数据库中。但是,当我返回验证哈希字符串时,BCrypt 生成的哈希值与数据库中要比较的哈希值不同。盐和因素明显相同。

这是我所知道的

$2a$12$vF/1s3MqIzHwnDshyzH/rOYUelofrj4UWv./vzWqk4o2K0uwhix7W 实际上是“Qwerty123”,它存储在一个初始化为 [nvarchar] (200) 的列中。

当我根据实现使用 BCrypt.Verify() 或 BCrypt.CheckPassword() 时,我会跟踪它,直到它进行比较之前,它要与前面提到的比较的哈希值是 $2a $12$vF/1s3MqIzHwnDshyzH/rOKVRePZSXFXaIpDv6.IPkbPEoOxZgSEe

如果您仔细观察,您会发现盐和因子部分是相同的。知道是什么原因造成的吗?

我正在使用的显式实现可以在这里找到http://bcrypt.codeplex.com/

我的问题可能与ASP.NET MVC 3 app, BCrypt.CheckPassword failing有关

【问题讨论】:

  • 如果你在一台服务器上重复BCrypt相同的字符串,你会得到相同的加密版本吗?
  • 是的,使用相同的字符串和盐每次生成的哈希都是相同的。

标签: c# asp.net hash passwords bcrypt


【解决方案1】:

问题在于 Bcrypt 的输入。我使用 Multiview 和 MultiViewPanels 来收集用户数据(其中有密码),允许用户验证所有数据,然后在最后一个 MultiViewPanel 上将用户添加到数据库中,并且在该过程中有回发。经过一些研究,我发现出于安全原因,密码字段在回发后不会保留其文本属性,并且因为我将 txtPassword.text 传递给 Bcrypt,这就是问题所在。这给我带来了一个需要研究的新问题。

【讨论】:

    【解决方案2】:

    测试建议

    private void FindWhatsFailing(string password) //password = Whatever you're passing in to verify BCrypt is working
    {
      const string expectedpassword = "Qwerty123";
      if(expectedpassword != password)
      {
          Debug.WriteLine("My password isn't what I thought it was");
          return;
      }
      string hashed = BCrypt.HashPassword(expectedpassword , BCrypt.GenerateSalt(12));
      if(!BCrypt.Verify(expectedpassword , hashed))
      {
         Debug.WriteLine("Something is wrong with BCrypt");
         return;
      }
    
      /// ... Test hashing password, compare to hash of expectedpassword, verify password against hash of itself and expectedpassword
    
     Debug.WriteLine("Everything worked, maybe the database storage is off?");
    }
    

    如果 Bcrypt.Verify 在此示例中对您不起作用,我不知道出了什么问题,但我猜 Bcrypt 实际上不是这里的问题。

    【讨论】:

      猜你喜欢
      • 2021-05-09
      • 2020-05-13
      • 2012-01-18
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多