sql >> Database teknologi >  >> RDS >> Mysql

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

Uden at bruge mere entropi, uniqid gør grundlæggende følgende (se kilde til uniqid.c ):

$time = explode(' ', microtime(false));
return sprintf('%s%08x%05x', $prefix, $time[1], $time[0] * 1000000);

Så det tager dybest set den aktuelle tid i mikrosekunder og gør dem til en hexadecimal repræsentation og tilføjer den til præfikset. Dette giver allerede unikke værdier.

Men værdierne er ikke helt tilfældige. For at få flere tilfældige værdier bør du tilføje mere entropi ved at indstille den anden parameter more_entropy . I så fald PHPs interne lineær kongruentialgenerator php_combined_lcg (se kilde til lgc.c ) bruges til at generere et pseudo-tilfældigt tal, der er vedhæftet i slutningen, og tilføjer ca. 30 bits ekstra entropi for at gøre dem mere tilfældige.



  1. Sådan genereres scripts for at genskabe fremmednøglebegrænsninger i SQL Server-databasen - SQL Server / TSQL vejledning del 73

  2. Kan ikke oprette forbindelse til MySQL-serveren på 'localhost' (10061) efter installation

  3. 'LIKE ('%this%' OR '%that%') and something=else' virker ikke

  4. Postgres analog til CROSS APPLY i SQL Server