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 }