【问题标题】:Trying to check a wordpress password hash using phpass尝试使用 phpass 检查 wordpress 密码哈希
【发布时间】:2018-02-11 00:02:35
【问题描述】:

我有一个散列的 Wordpress 密码数据库。我正在尝试根据数据库存储的密码检查用户的密码,但哈希值不正确。我正在使用this github code 和一些登录isMatch()。任何想法为什么这些密码不匹配?明文密码为alberta10

  public boolean isMatch(String password, String storedHash) {
    // The first 12 digits of the hash is used to modify the encryption.
    String setting = storedHash.substring(0, 12);
    logger.log(Level.INFO, "----Hashed pwd from db is: "+storedHash);
    logger.log(Level.INFO, "----Hashed pwd using php-pass: "+encrypt(password, setting));

    return storedHash.equals(encrypt(password, setting));
  }

这是我的authenticate() 方法

private void authenticate(String username, String password) throws Exception {
    // Throw an Exception if the credentials are invalid
    PasswordHasher pwdHasher=new PasswordHasher();

    _logger.log(Level.INFO, "----Authenticating user: "+username);
    try{
    Connection conn=authenticationBiz.connWordpressDB();
    String query = "SELECT * FROM wp_users WHERE user_login = ?";
    PreparedStatement preparedStmt = conn.prepareStatement(query);
    preparedStmt.setString(1, username);
    ResultSet rs=preparedStmt.executeQuery();
    rs.next();//get first result
    _logger.log(Level.INFO, "----Hashed pwd from db is: "+rs.getString("user_pass"));
    if(pwdHasher.isMatch(password,rs.getString("user_pass")))            
        return;
    }
    catch(Exception e){
        _logger.log(Level.INFO, "----Exception in Authenticating user: "+e);            
        throw e;
    }
    throw new Exception();
}

这是日志输出:

----Hashed pwd from db is: $P$BeatnTVG2/U8KZwpaWbPUF4yghHEKf.
    17:21:40,997 INFO  [com.mollom.phpass] (default task-37) ----Hashed pwd from db is: $P$BeatnTVG2/U8KZwpaWbPUF4yghHEKf.
 ----Hashed pwd using php-pass: $P$BeatnTVG2etvrth3rlCUdiNRm93PO9xZjXNr1f5s8izUZFfIq70V

【问题讨论】:

  • 密码哈希不匹配,因为来自链接的 github 项目的PasswordHasher 不使用与 Wordpress 相同的逻辑来哈希密码。为什么您认为PasswordHasher 与您的任务相关?如果是,您是否尝试过联系其作者?
  • 要获得相同的密码哈希逻辑,您需要为 Java 重写 WordPress 函数 wp_hash_password()。可能不会花你那么长时间。
  • wordpress 代码(在 PHP 中)使用来自 phppass 的 PasswordHasher,根据:core.trac.wordpress.org/browser/tags/4.8/src/wp-includes/…

标签: java wordpress hash


【解决方案1】:

原来我使用的 Github 项目与用于生成哈希的初始标准不匹配。我发现:https://github.com/Wolf480pl/PHPass 效果很好

【讨论】:

    【解决方案2】:

    Wordpress 使用 8 次哈希迭代,您链接的 git hub cod 使用 15 次迭代,也许您不能仅仅尝试减少常量 HASH_ITERATIONS 中定义的哈希迭代次数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 2019-04-07
      • 1970-01-01
      • 2012-08-29
      • 2019-06-29
      相关资源
      最近更新 更多