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?
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
Proszę samodzielnie utwórz odpowiedź i zaakceptuj to, aby zamknąć pytanie, zamiast dodawać "SOLVED" do tytułu – Bergi