मैं उपयोगकर्ता का पासवर्ड एन्क्रिप्ट करता हूं और डीबी में सहेजता हूं। फिर उपयोगकर्ता लॉगिन करने के लिए, हैश पासवर्ड और सादा पासवर्ड की तुलना करें, मुझे crypto/bcrypt: hashedPassword is not the hash of the given password
त्रुटि मिल रही है। क्या गलत है ?क्रिप्टो/bcrypt: हैशपैसवर्ड दिए गए पासवर्ड का हैश
func encryptPassword(password string) (string, error) {
bytePass := []byte(password)
hashedPassword, err := bcrypt.GenerateFromPassword(bytePass, bcrypt.DefaultCost)
if err != nil {
log.Printf("ERROR:EncryptPassword: %s", err.Error())
}
return string(hashedPassword), err
}
func (i *Impl) Register(user User) bool {
hashedPass, err := encryptPassword(user.Password)
if err != nil {
return false
}
user.Password = hashedPass
if err := i.DB.Create(&user).Error; err != nil {
log.Printf("ERROR:Register: %s", err.Error())
return false
}
return true
}
func (i *Impl) Login(email string, password string) (User, error) {
var user User
i.DB.Where("email = ?", email).First(&user)
err := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password))
if err != nil {
log.Printf("ERROR:Login: %s", err.Error())
return User{}, err
}
return user, err
}
क्या आप 'user.Password' – Danilo
की सामग्री का उदाहरण प्रदान कर सकते हैं क्या आपने डीबी से बाइट्स की तुलना की है ताकि यह सुनिश्चित किया जा सके कि यह ठीक से अपडेट हो रहा है, और किसी भी तरह से संशोधित नहीं किया गया है? उदाहरण के लिए – JimB
, यहां डीबी '$ 2 ए $ 10 $ rqHJJTHsxMbtX/5ZjG1mFuWyYbUDW1PLbfwQRN0uChwes38c/0m3e' से पासवर्ड धोया गया है, यह' 123456' से उत्पन्न हुआ है। फिर मैं हैश पासवर्ड और सादा पासवर्ड की तुलना करता हूं जो '123456' @Danilo @JimB –