package service import ( "crypto/rand" "math/big" "strings" ) // Characters: A-H, J-N, P-Y, 2-9 (no O/0/I/1) const keyChars = "ABCDEFGHJKMNPQRSTUVWXY23456789" func GenerateKey(prefix string) (string, error) { groups := make([]string, 4) for i := range groups { group := make([]byte, 4) for j := range group { idx, err := rand.Int(rand.Reader, big.NewInt(int64(len(keyChars)))) if err != nil { return "", err } group[j] = keyChars[idx.Int64()] } groups[i] = string(group) } return prefix + strings.Join(groups, "-"), nil }