package tool import ( "fmt" "strings" ) const deviceHashSalt uint32 = 0x5A3C7E9B // DeviceIdToHash encodes a device id to an 8-char uppercase hex string. // Algorithm mirrors frontend: id XOR salt → hex. // e.g. 1 → "5A3C7E9A", 42 → "5A3C7EA1" func DeviceIdToHash(id int64) string { return strings.ToUpper(fmt.Sprintf("%08x", uint32(id)^deviceHashSalt)) } // HashToDeviceId decodes an 8-char hex hash back to a device id. func HashToDeviceId(hash string) (int64, error) { var n uint32 _, err := fmt.Sscanf(strings.ToLower(hash), "%08x", &n) if err != nil { return 0, err } return int64(n ^ deviceHashSalt), nil }