| package common |
|
|
| import ( |
| "crypto/hmac" |
| "crypto/sha256" |
| "encoding/hex" |
|
|
| "golang.org/x/crypto/bcrypt" |
| ) |
|
|
| func GenerateHMACWithKey(key []byte, data string) string { |
| h := hmac.New(sha256.New, key) |
| h.Write([]byte(data)) |
| return hex.EncodeToString(h.Sum(nil)) |
| } |
|
|
| func GenerateHMAC(data string) string { |
| h := hmac.New(sha256.New, []byte(CryptoSecret)) |
| h.Write([]byte(data)) |
| return hex.EncodeToString(h.Sum(nil)) |
| } |
|
|
| func Password2Hash(password string) (string, error) { |
| passwordBytes := []byte(password) |
| hashedPassword, err := bcrypt.GenerateFromPassword(passwordBytes, bcrypt.DefaultCost) |
| return string(hashedPassword), err |
| } |
|
|
| func ValidatePasswordAndHash(password string, hash string) bool { |
| err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) |
| return err == nil |
| } |
|
|