PHP 개발에서 고유 식별자 (고유 ID)를 생성하는 것은 특히 사용자 세션 관리, 주문 번호 생성, 파일 이름 지정 등과 같은 시나리오에서 매우 일반적인 요구 사항입니다. PHP와 함께 제공되는 고유 () 기능은 현재 시간을 기준으로 고유 한 ID를 빠르게 생성 할 수 있지만 생성하는 ID는 비교적 간단하며 보안과 복잡성이 제한적입니다. 고유 식별자의 복잡성과 보안을 향상시키기 위해 2 차 처리를 위해 MD5 () 함수를 결합 할 수 있습니다.
Uniqid () 함수는 현재 마이크로 초 타임 스탬프를 기반으로 고유 한 문자열을 생성하고 기본적으로 약 13 비트의 문자열을 생성합니다.
echo uniqid(); // 출력은 비슷합니다:5f5a1d5b7e6a1
이 ID는 기본적으로 동일한 프로세스 내에서 고유 한 것으로 보장되지만 동시성 높은 상황에서는 여전히 복제의 위험이 있습니다.
MD5 () 함수는 문자열을 해시하고 32 비트 길이의 16 진수 문자열을 생성 할 수 있습니다.
echo md5('hello'); // 산출:5d41402abc4b2a76b9719d911017c592
문자열의 복잡성과 예측 성은 MD5 () 를 통해 증가 할 수 있습니다.
아이디어는 먼저 Uniqid ()를 사용하여 타임 스탬프를 기반으로 고유 ID를 생성 한 다음 MD5 () 를 통해 ID와 추가 정보를 해시하여보다 복잡하고 안전한 신원을 생성하는 것입니다.
샘플 코드 :
<?php
// 기본 독특한 생성ID,고유성을 보장하기 위해 더 많은 엔트로피를 추가하십시오(두 번째 매개 변수는입니다true더 많은 엔트로피가 사용됩니다)
$baseUniqId = uniqid('', true);
// 추가 임의 숫자를 추가하십시오,강화 된 복잡성
$random = mt_rand();
// 스티칭 줄
$rawString = $baseUniqId . $random;
// 통과하다md5암호화
$uniqueId = md5($rawString);
echo $uniqueId; // 출력은 비슷합니다:e4d909c290d0fb1ca068ffaddf22cbd0
?>
생성 된 $ 고유의 길이는 32 비트로 고정 될뿐만 아니라 예측할 수 없으며 기본적으로 반복되지 않으며 대부분의 시나리오에 적합합니다.
더 안전한 고유 식별자 (예 : 보안 관련 시나리오)가 필요한 경우 해시 () 함수 및 random_bytes ()를 사용하는 것과 같은 더 강한 해시 알고리즘과보다 복잡한 랜덤 엔트로피를 결합하는 것이 좋습니다.
<?php
// 더 복잡한 랜덤 엔트로피를 생성합니다
$randomBytes = bin2hex(random_bytes(16));
// 스 플라이 싱uniqid그리고 랜덤 엔트로피
$rawString = uniqid('', true) . $randomBytes;
// 사용sha256해싱
$uniqueId = hash('sha256', $rawString);
echo $uniqueId; // 산출64비트 길이 문자열,더 안전합니다
?>
위의 방법을 통해 uniqid () 및 md5 () (또는 더 강한 해시 함수)를 결합하면 복잡하고 안전한 고유 식별자를 신속하게 생성 할 수 있습니다. 간단하고 효율적이며 대부분의 PHP 응용 프로그램에 사용하기에 적합합니다.