Mysql
 sql >> Baza danych >  >> RDS >> Mysql

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

Bez używania większej entropii, uniqid zasadniczo wykonuje następujące czynności (patrz źródło uniqid.c ):

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

Więc w zasadzie zajmuje to bieżący czas w mikrosekundach i zamienia je w reprezentację szesnastkową i dołącza ją do przedrostka. To już zapewnia unikalne wartości.

Ale wartości nie są całkiem przypadkowe. Aby uzyskać więcej losowych wartości, należy dodać więcej entropii, ustawiając drugi parametr more_entropy . W takim przypadku wewnętrzny liniowy generator zgodności php_combined_lcg (patrz źródło lgc.c ) służy do generowania pseudolosowej liczby, która jest dołączona na końcu, dodając około 30 bitów dodatkowej entropii, aby uczynić je bardziej losowymi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP PDO - liczba wierszy

  2. Migracja danych BLOB z MS SQL Server do MySQL

  3. Pobieranie ostatnich 5 znaków ciągu za pomocą zapytania mysql

  4. UTF-8 MySQL i zestaw znaków

  5. Polecenia tworzenia kopii zapasowych i przywracania danych MySQL do administrowania bazą danych