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