8

i use this library golang.org/x/crypto/bcrypt to hash password and compare hash with password but I having problem see below:

main.go file

package main

import (
        "./hash"
)

func main() {
        password := "passwd"
        hash := "hhhhhhhhaaaaaaaaaassssssssssshhhhhhhhhhh"

        check := hash.CheckPasswordHash(password, hash)
}

hash/hash.go file

package hash

import "golang.org/x/crypto/bcrypt"

func HashPassword(password string) (string, error) {
        bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)

        return string(bytes), err
}

func CheckPasswordHash(password, hash string) bool {
        err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))

        return err == nil
}

if you run this:

$ go run main.go

It will show this error:

./main.go:11:15: hash.CheckPasswordHash undefined (type string has no field or method CheckPasswordHash)

why this error?

1
  • 2
    You have a variable named hash which is shadowing the package named hash. Also, try to avoid relative package imports. Commented Jul 10, 2018 at 19:01

2 Answers 2

11

In main, your variable name hash contains a long string. So it shadows the package name hash. You should rename one or the other.

Sign up to request clarification or add additional context in comments.

Comments

0

In main.go file Change hash variable to other name (Do not use variable with the same package name)

thanks "Adrian"

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.