Software /
code /
prosody
Comparison
util/uuid.lua @ 7049:0eee56075901
util.uuid: Take random byte directly instead of the low bits from the ascii value of a hex nibble
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 06 Jan 2016 03:28:31 +0100 |
parent | 7012:990b4ddaf582 |
child | 7061:eda0feeaf759 |
comparison
equal
deleted
inserted
replaced
7047:9ca2b720ad43 | 7049:0eee56075901 |
---|---|
14 local function get_nibbles(n) | 14 local function get_nibbles(n) |
15 return hex(random_bytes(m_ceil(n/2))):sub(1, n); | 15 return hex(random_bytes(m_ceil(n/2))):sub(1, n); |
16 end | 16 end |
17 | 17 |
18 local function get_twobits() | 18 local function get_twobits() |
19 return ("%x"):format(get_nibbles(1):byte() % 4 + 8); | 19 return ("%x"):format(random_bytes(1):byte() % 4 + 8); |
20 end | 20 end |
21 | 21 |
22 local function generate() | 22 local function generate() |
23 -- generate RFC 4122 complaint UUIDs (version 4 - random) | 23 -- generate RFC 4122 complaint UUIDs (version 4 - random) |
24 return get_nibbles(8).."-"..get_nibbles(4).."-4"..get_nibbles(3).."-"..(get_twobits())..get_nibbles(3).."-"..get_nibbles(12); | 24 return get_nibbles(8).."-"..get_nibbles(4).."-4"..get_nibbles(3).."-"..(get_twobits())..get_nibbles(3).."-"..get_nibbles(12); |