尝试使用phpass检查WordPress密码哈希

5
我有一个存储了经过哈希处理的WordPress密码的数据库。我试图将用户的密码与存储在数据库中的密码进行比对,但是哈希值不正确。我正在使用这个Github代码,并在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 对你的任务有何影响?如果有的话,你是否尝试联系作者? - Oleg Estekhin
1
要获得相同的密码哈希逻辑,您需要为Java重写WordPress函数wp_hash_password()。可能不会花费太长时间。 - James Jones
WordPress 代码(使用 PHP)根据此链接 https://core.trac.wordpress.org/browser/tags/4.8/src/wp-includes/pluggable.php#L0 使用 phppass 的 PasswordHasher。 - Rilcon42
2个回答

2

1
WordPress使用8个哈希迭代,你提供的git hub代码使用15个迭代,也许你可以尝试减少常量HASH_ITERATIONS中定义的哈希迭代次数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接