cairn/internal/fingerprint/hash.go

19 lines
388 B
Go

package fingerprint
import (
"crypto/sha256"
"fmt"
"strings"
)
// Hash computes a stable SHA-256 fingerprint from normalized frames.
func Hash(frames []NormalizedFrame) string {
var parts []string
for _, f := range frames {
parts = append(parts, f.Function+"\x00"+f.File)
}
data := strings.Join(parts, "\n")
sum := sha256.Sum256([]byte(data))
return fmt.Sprintf("%x", sum)
}