Non riesco a trovare una password in chiaro e un hash precedente corrispondente utilizzando il metodo checkpw di BCrypt (plaintextpw, previoushash).Come utilizzare jBCrypt per il confronto delle hash delle password?
In un servlet di registro prendo la password immessa, l'hash che utilizza il metodo hashpw (password, genSalt) di BCrypt e la memorizza in un db.
Nel servlet di login prendo quell'hash dal db e uso il checkpw di BCrypt per vedere se corrisponde alla password inserita.
Non corrisponde mai. Funziona bene nella mia app java normale, ma non nella webapp. Nessun altro sta avendo questo problema così ho dato che devo fare è sbagliato:
//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");
}
L'API bcrypt è molto semplice - here
non sto memorizzare il sale perché con bcrypt si suppone don' devo - quindi cosa sto sbagliando?
SOLVED: il campo del database in cui è stato memorizzato pw_hash era composto da 80 caratteri. 20 più di un hash BCrypt. Ritaglio dell'hash o reimpostazione del campo del database su 60 caratteri elaborati. Spero che questo aiuti qualcun altro. – VNorman
Si prega di creare una risposta da soli e accettarla, per chiudere la domanda, invece di aggiungere "RISOLTO" al suo titolo – Bergi