mirror of
				https://github.com/tailscale/tailscale.git
				synced 2025-11-03 17:51:28 +01:00 
			
		
		
		
	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]
 | 
						|
}
 |