Düz şifreli bir parola almayı ve BCrypt'in checkpw (plaintextpw, previoushash) yöntemini kullanarak eşleşmesi için önceki bir hashta sorun yaşıyorum.Parola karma karşılaştırması için jBCrypt nasıl kullanılır?
Kayıtlı bir sunucu uygulamasında, girilen parolayı alıyorum, BCrypt's hashpw (password, genSalt) yöntemini kullanarak kullanıp db olarak saklayın.
Oturum açma uygulamasında bu karmaşayı db'den alıyorum ve girilen şifreyle eşleşip eşleşmediğini görmek için BCrypt'in checkpw'ını kullanıyorum.
Hiç eşleşmez. Bu normal java uygulamasında gayet iyi çalışıyor, sadece webapp'ta değil. - here
ben çünkü güya 'don BCrypt ile tuz depolamak değilim
//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 çok basittir: Ben yanlış yapıyor olmalı anlamaya böylece Kimse bu sorunu yaşıyor zorundayım - yani ne yapıyorum yanlış?
SOLVED - pw_hash içinde saklanan veritabanı alanı, 80 karakterdi .. 20 BC şifreden 20 daha fazla. Karmaşı kesmek veya veritabanı alanını 60 karaktere sıfırlamak işe yaradı. Umarım bu bir başkasına yardım eder. – VNorman
Lütfen kendinize bir cevap oluşturun ve başlığı kapatmak için "SOLVED" eklemek yerine, soruyu kapatmak için bunu kabul edin. – Bergi