> 백엔드 개발 > PHP 튜토리얼 > PHP에서 유효한 V4 UUID를 생성하려면 어떻게 해야 합니까?

PHP에서 유효한 V4 UUID를 생성하려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2024-12-14 00:03:10
원래의
610명이 탐색했습니다.

How Can I Generate a Valid V4 UUID in PHP?

V4 UUID에 유효한 PHP 함수 생성

v4 UUID를 생성하는 PHP의 기존 함수에는 v4 표준의 특정 형식을 준수하는 데 결함이 있습니다. 표준에서는 9번째 옥텟의 상위 비트와 예약된 비트가 10이어야 한다고 규정합니다.

문제 인식

원인은 함수가 이러한 비트를 일관되지 않게 처리하는 데 있습니다. 이를 수정하려면 RFC 4122 섹션 4.4에 따라 특정 변경을 수행해야 합니다.

해결책

아래의 개선된 기능은 필요한 조정을 구현합니다.

function uuidv4()
{
  $data = random_bytes(16);

  $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100
  $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10
    
  return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
로그인 후 복사

데이터는 Random_bytes를 사용하여 생성되므로 무작위성과 보안이 보장됩니다. 후속 16진수 변환에서는 vsprintf를 활용하여 적절한 형식을 유지합니다.

PHP 5 및 이전 호환성

random_bytes를 사용할 수 없는 PHP 7.0 이전 버전의 경우 대체 구현이 제공됩니다.

$data = openssl_random_pseudo_bytes(16, $strong);
// ensure the result is cryptographically strong
assert($data !== false && $strong);
로그인 후 복사

추가 참고사항

암호화 방식을 사용하는 것이 중요합니다. UUID의 견고성을 보장하기 위해 Random_bytes 또는 openssl_random_pseudo_bytes와 같은 강력한 무작위 데이터 생성기를 사용합니다. 특정 요구 사항이 있는 경우 임의 데이터를 생성하기 위한 대체 방법을 고려해 보십시오.

위 내용은 PHP에서 유효한 V4 UUID를 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿