| 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 | |
| } | |