2012-03-15 7 views
14

Mam problemy z uzyskaniem hasła w postaci zwykłego tekstu i poprzedniego skrótu do dopasowania przy użyciu metody Checkpw (plaintextpw, previoushash) BCrypt.Jak korzystać z jBCrypt do porównywania hash hasłem?

W serwecie rejestru biorę wprowadzone hasło, łączę je za pomocą metody hashpw (hasło, genSalt) BCrypt i przechowuję ją w db.

W serwecie logowania biorę ten skrót z bazy danych i używam checkpw BCrypt, aby sprawdzić, czy pasuje do wprowadzonego hasła.

Nigdy nie pasuje. Działa to dobrze w mojej zwykłej aplikacji java, ale nie w aplikacji internetowej. Nikt inny nie jest ten problem więc postać muszę robić to źle:

//RegisterServlet 

String pw_hash = BCrypt.hashpw(request.getParameter("password"), BCrypt.gensalt()); 

String loginInsertString = "insert into login (loname,lopassword,locustomerid)" + 
        " VALUES ('" + username + "','" + pw_hash + "','" + loginInsert +  "');"; 


//LoginServlet 

ResultSet rs = stmt.executeQuery("select lopassword from login where loname = '" + 
        loginName + "';"); 
      while(rs.next()){ 
       dbhash = rs.getString(1); 

      } 
      out.println(dbhash+"<br>"); 

if (BCrypt.checkpw(request.getParameter("password"), dbhash)) { 
       out.println("It matches"); 
      }else{ 
       out.println("It does not match"); 
      } 

BCrypt API jest bardzo prosta - here

nie jestem przechowywania soli, ponieważ z BCrypt ty podobno don” Trzeba - więc co robię źle?

+3

SOLVED - Pole bazy danych, w którym przechowywano plik pw_hash miało 80 znaków. 20 razy więcej niż skrót hasha. Przycinanie hasza lub resetowanie pola bazy danych do 60 znaków działa. Mam nadzieję, że to pomoże komuś innemu. – VNorman

+28

Proszę samodzielnie utwórz odpowiedź i zaakceptuj to, aby zamknąć pytanie, zamiast dodawać "SOLVED" do tytułu – Bergi

Odpowiedz

9

Pole bazy danych, w którym przechowywano pw_hash miało 80 znaków. To było 20 znaków więcej niż mieszanie BCrypt. Przycinanie hasza lub resetowanie pola bazy danych do 60 znaków.

(Delegowanie daną odpowiedź [patrz komentarz na pytanie], aby usunąć pytanie z kolejki bez odpowiedzi. Użytkownik został poproszony prawie rok temu, aby to zrobić, ale nie uczyniła tego jeszcze. Kredyt dla tej odpowiedzi jest ich)

Powiązane problemy