mirror of
https://github.com/tailscale/tailscale.git
synced 2024-12-05 07:55:36 +00:00
7175f06e62
We use it a number of places in different repos. Might as well make one. Another use is coming. Updates #cleanup Change-Id: Ib7ce38de0db35af998171edee81ca875102349a4 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
26 lines
534 B
Go
26 lines
534 B
Go
// 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]
|
|
}
|