diff --git a/common/uuid/uuid.go b/common/uuid/uuid.go index 496a2f6ef..0f6cf11b6 100644 --- a/common/uuid/uuid.go +++ b/common/uuid/uuid.go @@ -2,17 +2,26 @@ package uuid import ( "fmt" - "math/rand" + "crypto/rand" + "encoding/binary" "time" ) +func uint32rand() (value uint32) { + err := binary.Read(rand.Reader, binary.LittleEndian, &value) + if err != nil { + panic(err) + } + return +} + // Generates a time ordered UUID. Top 32 bits are a timestamp, // bottom 96 are random. func TimeOrderedUUID() string { unix := uint32(time.Now().UTC().Unix()) - rand1 := rand.Uint32() - rand2 := rand.Uint32() - rand3 := rand.Uint32() + rand1 := uint32rand() + rand2 := uint32rand() + rand3 := uint32rand() return fmt.Sprintf("%08x-%04x-%04x-%04x-%04x%08x", unix, uint16(rand1>>16),