2017-09-01 7 views
5

私はハッシュワードワードパスワードのデータベースを持っています。データベースのパスワードが格納されているユーザーのパスワードを確認しようとしていますが、ハッシュが正しくありません。私はthis github codeを使用しており、ログの一部はisMatch()です。これらのパスワードが一致しない理由は何ですか?プレーンテキストのパスワードはここでalberta10phpassを使ってワードプレスのパスワードハッシュをチェックしようとしています

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(); 
} 

がHERESにログ出力されます:

----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 
+0

リンクされたgithubプロジェクトの 'PasswordHasher'がWordpressとしてパスワードをハッシュするのと同じロジックを使用していないのでパスワードハッシュが一致しません。なぜあなたは 'PasswordHasher'があなたの仕事に関係していると思いますか?そうであれば、その著者に連絡してみましたか? –

+1

同じパスワードハッシュロジックを取得するには、JavaのWordPress関数wp_hash_password()を書き直したいと思うでしょう。おそらくそれをあなたに取ることはないでしょう。 –

+0

ワードプレスコード(PHP版)は、これに従ってphppassから 'PasswordHasher'を使います:https://core.trac.wordpress.org/browser/tags/4.8/src/wp-includes/pluggable.php#L0 – Rilcon42

答えて

2

私は、ハッシュの生成に使用された初期基準と一致しないGithubプロジェクトを使用していました。私は発見しました:https://github.com/Wolf480pl/PHPass完全に動作しました

1

Wordpressのは、8回のハッシュの繰り返し、あなたがきたGitのハブタラを使用していますリンクは15回の反復を使用しますが、定数HASH_ITERATIONSで定義されたハッシュ反復の数を減らそうとするだけでは不十分です。

関連する問題