package security import "golang.org/x/crypto/bcrypt" type BcryptHasher struct{ cost int } func NewBcryptHasher() BcryptHasher { return BcryptHasher{cost: bcrypt.DefaultCost} } func (h BcryptHasher) Hash(plain string) (string, error) { b, err := bcrypt.GenerateFromPassword([]byte(plain), h.cost) return string(b), err } func (h BcryptHasher) Compare(hash, plain string) error { return bcrypt.CompareHashAndPassword([]byte(hash), []byte(plain)) }