2012-03-15 19 views
14

मुझे एक सादे टेक्स्ट पासवर्ड और पिछले हैश को BCrypt की checkpw (plaintextpw, pasthash) विधि का उपयोग करके मिलान करने में समस्या हो रही है।पासवर्ड हैश तुलना के लिए jBCrypt का उपयोग कैसे करें?

एक रजिस्टर सर्वलेट में मैं दर्ज पासवर्ड लेता हूं, हैश यह बीसीआरपीटी के हैशप (पासवर्ड, जेनसाल्ट) विधि का उपयोग करके इसे डीबी में संग्रहीत करता है।

लॉगिन सर्वलेट में मैं उस हैश को डीबी से लेता हूं, और यह देखने के लिए कि यह दर्ज पासवर्ड से मेल खाता है या नहीं, यह देखने के लिए बीसीआरपीटी के चेकप्यू का उपयोग करें।

यह कभी मेल नहीं खाता है। यह मेरे नियमित जावा ऐप में ठीक काम करता है, बस वेबपैप में नहीं। कोई भी नहीं इस समस्या हो रही है तो मैं समझ मैं इसे गलत कर किया जाना चाहिए:

//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 एपीआई बहुत सरल है - here

मैं क्योंकि साथ BCrypt आप माना जाता है कि डॉन 'नमक भंडारण नहीं कर रहा हूँ टी करना है - तो मैं गलत क्या कर रहा हूँ?

+3

सोल्वड - डेटाबेस फ़ील्ड pw_hash 80 वर्णों में संग्रहीत किया गया था .. एक बीक्रिप्ट हैश से 20 अधिक। हैश को ट्रिम करना या डाटाबेस फ़ील्ड को 60 वर्णों में रीसेट करना। मनाइए कि यह किसी और के लिए सहायक हो। – VNorman

+28

कृपया अपने आप को उत्तर दें और इसे स्वीकार करें, प्रश्न को बंद करने के बजाय, "शीर्षक" को इसके शीर्षक में जोड़ने के बजाय – Bergi

उत्तर

9

डेटाबेस फ़ील्ड pw_hash 80 वर्णों में संग्रहीत किया गया था। यह एक बीक्रिप्ट हैश से 20 वर्ण अधिक था। हैश को ट्रिम करना या डेटाबेस फ़ील्ड को 60 अक्षरों में रीसेट करना काम किया।

(दिए गए जवाब [सवाल पर टिप्पणियों को देखने] पोस्ट करना अनुत्तरित कतार। उपयोगकर्ता लगभग एक साल पहले कहा गया था ऐसा करने के लिए, लेकिन इस उत्तर के लिए अभी तक ऐसा नहीं किया है। क्रेडिट से सवाल दूर करने के लिए उनकी है)

संबंधित मुद्दे