我使用这个库golang.org/x/crypto/bcrypt来哈希密码并将哈希与密码进行比较,但是我在下面看到了问题:
main.go文件
package main
import (
"./hash"
)
func main() {
password := "passwd"
hash := "hhhhhhhhaaaaaaaaaassssssssssshhhhhhhhhhh"
check := hash.CheckPasswordHash(password, hash)
}
hash / hash.go文件
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
}
如果运行此命令:
$ go run main.go
它将显示此错误:
./ main.go:11:15:hash.CheckPasswordHash未定义(类型字符串没有 字段或方法CheckPasswordHash)
为什么会出现此错误?
答案 0 :(得分:3)
在main
中,变量名hash
包含一个长字符串。因此,它遮盖了程序包名称hash
。您应该重命名一个。
答案 1 :(得分:0)
在main.go文件中,将哈希变量更改为其他名称(请勿使用具有相同程序包名称的变量)
感谢“艾德里安”