function uuid() {
$data = openssl_random_pseudo_bytes(16);
assert(strlen($data) == 16);
// Set version to 0100
$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
// Set bits 6-7 to 10
$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
echo uuid(); // Returns a valid UUID like '550e8400-e29b-41d4-a716-446655440000'
function generateUUID()
{
// 生成唯一标识符
$uuid = uniqid('', true);
// 添加更多随机性和熵值
$data = openssl_random_pseudo_bytes(16);
$data[6] = chr(ord($data[6]) & 0x0f | 0x40); // 设置版本为4 (random)
$data[8] = chr(ord($data[8]) & 0x3f | 0x80); // 设置变体为10 (RFC 4122)
// 将数据格式化为 UUID 字符串
$uuid .= vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
return $uuid;
}
// 示例用法
$uuid = generateUUID();
echo $uuid;
function uuid()
{
$data = random_bytes(16); // 生成16字节的随机字节串
$data[6] = chr(ord($data[6]) & 0x0f | 0x40); // 设置版本号为4
$data[8] = chr(ord($data[8]) & 0x3f | 0x80); // 设置为无变体
$uuid = vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
return $uuid;
}
echo uuid();
//生成后格式82796f26-ee3c-f32d-997f-42479f66f8ff
网友评论