sql >> Database >  >> RDS >> Mysql

PHP - uniqid(,true) versus uniqid()+mt_rand()

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.



  1. Wat is MySQL-rijvolgorde voor SELECT * FROM table_name;?

  2. Is er een manier om meerdere triggers in één script te maken?

  3. Hoe log/traceer ik Oracle opgeslagen procedure-aanroepen met parameterwaarden?

  4. MySQL Group By en Som totale waarde van andere kolom