From 87bea6ab2cdf3b6d234403a0def537b1484985a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B7=E5=8B=87?= Date: Fri, 8 Sep 2023 17:01:58 +0800 Subject: [PATCH] add password --- go.mod | 1 + go.sum | 2 ++ password.go | 20 ++++++++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 password.go diff --git a/go.mod b/go.mod index cc084b2..bf8e335 100644 --- a/go.mod +++ b/go.mod @@ -6,4 +6,5 @@ require ( github.com/garyburd/redigo v1.6.2 github.com/go-sql-driver/mysql v1.5.0 github.com/gomodule/redigo v1.8.3 + golang.org/x/crypto v0.13.0 // indirect ) diff --git a/go.sum b/go.sum index 5ace556..5cd70ac 100644 --- a/go.sum +++ b/go.sum @@ -11,6 +11,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/password.go b/password.go new file mode 100644 index 0000000..3527004 --- /dev/null +++ b/password.go @@ -0,0 +1,20 @@ +package q5 + +import ( + "fmt" + "golang.org/x/crypto/bcrypt" +) + +// HashPassword returns the bcrypt hash of the password +func HashPassword(password string) (string, error) { + hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) + if err != nil { + return "", fmt.Errorf("failed to hash password: %w", err) + } + return string(hashedPassword), nil +} + +// CheckPassword checks if the provided password is correct or not +func CheckPassword(password string, hashedPassword string) error { + return bcrypt.CompareHashAndPassword([]byte(hashedPassword), []byte(password)) +}