2016-04-17 6 views
0

ユーザーがアプリケーションにログインするとき、データベースのハッシュ値と比較するためにパスワードのテキストバージョンが必要です。しかし、私は本当に苦労しています。BCryptを使用したSQLiteデータベースからユーザー入力へのハッシュされたパスワードの比較

誰でも手伝ってもらえますか?

public void onButtonClick(View v) 

{ 
    if (v.getId() == R.id.Blogin) { 

     EditText a = (EditText) findViewById(R.id.TFusername); 
     String str = a.getText().toString(); 
     EditText b = (EditText) findViewById(R.id.TFpassword); 
     String pass = b.getText().toString(); 


     String login = helper.searchPass(str); 

     **// if username is = to the password in the database 
     if (pass.equals(login) 

       //method to check password hashes 
       // BCrypt.checkpw(*user input plain text*, *previous hash from db* 
       && BCrypt.checkpw(//i dont know what to put here)) {** 

      Intent i = new Intent(MainActivity.this, RegForensics.class); 
      i.putExtra("Username", str); 
      startActivity(i); 


      Login l = new Login(); 
      l.setUserlog(str); 

      helper.insertLogin(l); 


     } else { 
      Toast temp = Toast.makeText(MainActivity.this, "Username and password don't match!", Toast.LENGTH_SHORT); 
      temp.show(); 


     } 

答えて

1

コメントには、ユーザーが入力したパスワードとデータベースからのハッシュパスワードの2つのパラメータがあります。

BCrypt.checkpwは、パスワードをハッシュし、以前ハッシュされたパスワードと比較します。

BCrypt documentationを参照してください。

注:ハッシュされたパスワードの最初の部分には、ハッシュに関するメタデータが含まれています。

+0

私はそれを理解していますが、私は何をそこに置くべきか分かりません。私はそれがBCrypt.checkpw(パス、**)する必要があることを知っているが、私はどのように対応するハッシュパスワードをプルするかを把握することはできません。 –

関連する問題