2016-02-22 5 views
6

Ich verschlüssle das Benutzerpasswort und speichere es in db. Dann zum Benutzer Login, Hash-Passwort und einfaches Passwort zu vergleichen, bekomme ich crypto/bcrypt: hashedPassword is not the hash of the given password Fehler. Was ist los mit dir ?crypto/bcrypt: hashedPassword ist nicht der Hash des angegebenen Passworts

+0

Können Sie ein Beispiel für den Inhalt von 'user.Password' angeben? – Danilo

+0

Haben Sie die Bytes von der DB verglichen, um sicherzustellen, dass sie ordnungsgemäß aktualisiert und in keiner Weise verändert wird? – JimB

+0

zum Beispiel, hier ist Hash-Passwort von db '$ 2a $ 10 $ rqHJJTHsxMbtX/5ZjG1mFuWyYbUDW1PLbfwQRN0uChwes38c/0m3e', dies von' 123456' generiert. Dann vergleiche ich Hash-Passwort und einfaches Passwort, das ist 123456 @ Danilo @ JimB –

Antwort

0

Ich kann nicht sagen, was ist, aber in Ihrer Vergleichsfunktion sicherstellen, dass Sie die Variablen an der richtigen Stelle haben.

bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password)) 
      Must be the already hashed PW^   ^Plain Text Password to compare 

auch sicherzustellen, dass Sie tatsächlich etwas zu bekommen Hash, könnten Sie ein leeres Passwort bekommen, aber nicht es zu merken, da der Hash noch voll aussehen wird.

+0

'user.Password' kommt von db, also ist es bereits Hash-Passwort. –

+0

@MelihMucuk Sind Sie sicher, dass es das Richtige ist? Hast du versucht, den Wert zu protokollieren, bevor er gehackt wird? – Datsik

3

Meine Wette ist, dass user.Password in Ihrer Register Funktion leer ist, bevor Sie es zu encryptPassword was zu Hashes auf leere Passwörter wie die, die Sie zur Verfügung gestellt ($2a$10$rqHJJTHsxMbtX/5ZjG1mFuWyYbUDW1PLbfwQRN0uChwes38c/0m3e) übergeben.

+0

Ja, Sie können dies leicht mit 'fmt.Println (bcrypt.CompareHashAndPassword ([] byte (" $ 2a $ 10 $ rqHJJTHsxMbtX/5ZjG1mFuWyYbUDW1PLbfwQRN0uChwes38c/0m3e "), [] Byte {}))' was nur 'nil' druckt. Sie sollten einen Haken bei 'encryptPassword' hinzufügen, um sicherzustellen, dass dies nicht geschieht. – djd

Verwandte Themen