hi-server/pkg/tool/device.go
2026-03-15 19:38:37 -07:00

26 lines
633 B
Go

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
}