Zonder meer entropie te gebruiken, uniqid
doet in principe het volgende (zie bron van uniqid.c
):
$time = explode(' ', microtime(false));
return sprintf('%s%08x%05x', $prefix, $time[1], $time[0] * 1000000);
Dus het neemt in feite de huidige tijd in microseconden en verandert ze in een hexadecimale weergave en voegt deze toe aan het voorvoegsel. Dit levert al unieke waarden op.
Maar de waarden zijn niet helemaal willekeurig. Om meer willekeurige waarden te krijgen, moet u meer entropie toevoegen door de tweede parameter more_entropy in te stellen . In dat geval PHP's interne lineaire congruentiële generator
php_combined_lcg
(zie bron van lgc.c
) wordt gebruikt om een pseudo-willekeurig getal te genereren dat aan het einde wordt toegevoegd, waarbij ongeveer 30 bits extra entropie worden toegevoegd om ze meer willekeurig te maken.