// Copyright (c) Tailscale Inc & AUTHORS // SPDX-License-Identifier: BSD-3-Clause // Package rands contains utility functions for randomness. package rands import ( crand "crypto/rand" "encoding/hex" ) // HexString returns a string of n cryptographically random lowercase // hex characters. // // That is, HexString(3) returns something like "0fc", containing 12 // bits of randomness. func HexString(n int) string { nb := n / 2 if n%2 == 1 { nb++ } b := make([]byte, nb) crand.Read(b) return hex.EncodeToString(b)[:n] }