2012-03-15 14 views
14

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ış?

+3

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

+28

Lütfen kendinize bir cevap oluşturun ve başlığı kapatmak için "SOLVED" eklemek yerine, soruyu kapatmak için bunu kabul edin. – Bergi

cevap

9

Pw_hash içinde depolanan veritabanı alanı 80 karakterdir. Bu bir BCrypt hash değerinden 20 karakter daha fazla oldu. Karma alanı kesmek veya veritabanı alanını 60 karaktere sıfırlamak işe yaradı.

(. Kullanıcı bunu yapmak için yaklaşık bir yıl önce istendi ama çok henüz yapmadı. Kredi Bu yanıt için cevaplanmamış kuyruktan soruyu kaldırmak için verilen cevabı [soru üzerine yorumları görmek] Gönderme onların olduğunu)

İlgili konular