Be careful when setting the 'strong' parameter to true.
If you system doesn't have enough entropy your script will block which can cause timeouts in other parts of your code.
In my case, the most serious symptom was my script blocking when trying to read from /dev/random and causing a 'MySQL has gone away' error.
Hopefully this saves someone the trouble when deciding to use /dev/random entropy
OAuthProvider::generateToken
(PECL OAuth >= 1.0.0)
OAuthProvider::generateToken — Genera un token aleatorio
Descripción
$size
[, bool $strong = false
] )Genera una string de bytes pseudo-aleatorios.
Parámetros
-
size -
La longitud The desired token length, in terms of bytes.
-
strong -
Establecer a
TRUEsignifica que /dev/random será usada para la entropía, de lo contrario /dev/urandom será usado. Este parámetro es ignorado en Windows.
Valores devueltos
El token generado, como un string de bytes.
Errores/Excepciones
Si el parámetro strong es TRUE, entonces un
error E_WARNING será emitido cuando la implementación
rand() sea usada para rellenar
los restantes bytes aleatorios (Ejemplo, cuando no suficientes datos aleatorios fueron encontrados,
inicialmente).
Ejemplos
Ejemplo #1 Ejemplo de OAuthProvider::generateToken()
<?php
$p = new OAuthProvider();
$t = $p->generateToken(4);
echo strlen($t), PHP_EOL;
echo bin2hex($t), PHP_EOL;
?>
El resultado del ejemplo sería algo similar a:
4 b6a82c27
Notas
Nota:
Cuando no suficientes datos aleatorios están disponibles para el sistema, esta función llenará los restantes bytes aleatorios usando la implementación interna de PHP rand().
Ver también
- openssl_random_pseudo_bytes() - Genera una cadena de bytes pseudo-aleatoria
- mcrypt_create_iv() - Crea un vector de inicialización (IV) desde una fuente aleatoria
