php生成uuid 2023-01-31

2023-01-30  本文已影响0人  阿然学编程
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
上一篇 下一篇

猜你喜欢

热点阅读