Files
hfb_sys/backend/pkg/crypto/fingerprint.go
T

22 lines
625 B
Go

package crypto
import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"strings"
)
// FingerprintHMAC 生成用于唯一性盲索引的稳定 HMAC-SHA256 指纹。
// secret 为空时退化为带域前缀的 SHA-256,仅用于本地/测试环境。
func FingerprintHMAC(secret, domain, value string) string {
payload := strings.TrimSpace(domain) + ":" + strings.TrimSpace(value)
if strings.TrimSpace(secret) == "" {
sum := sha256.Sum256([]byte(payload))
return hex.EncodeToString(sum[:])
}
mac := hmac.New(sha256.New, []byte(secret))
_, _ = mac.Write([]byte(payload))
return hex.EncodeToString(mac.Sum(nil))
}