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 — Génère un jeton aléatoire
Description
$size
[, bool $strong = false
] )Génère une chaîne de caractères d'octets pseudo-aléatoires.
Liste de paramètres
-
size -
La longueur désirée du jeton, en octets.
-
strong -
Définit à
TRUE, signifie que /dev/random sera utilisé, sinon, ce sera /dev/urandom. Ce paramètre est ignoré sous Windows.
Valeurs de retour
Le jeton généré, sous la forme d'une chaîne de caractères d'octets.
Erreurs / Exceptions
Si le paramètre strong vaut TRUE, alors, une
alerte de niveau E_WARNING sera émise lorsque la
fonction de rappel rand() est utilisée pour compléter
les octets aléatoires manquant (i.e., lorsqu'il n'y a pas assez de données
aléatoires initialement).
Exemples
Exemple #1 Exemple avec OAuthProvider::generateToken()
<?php
$p = new OAuthProvider();
$t = $p->generateToken(4);
echo strlen($t), PHP_EOL;
echo bin2hex($t), PHP_EOL;
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
4 b6a82c27
Notes
Note:
Lorsqu'il n'y a pas assez de données aléatoires de disponible sur le système, cette fonction complètera les octets manquant en utilisant la fonction PHP interne rand().
Voir aussi
- openssl_random_pseudo_bytes() - Génère une chaine pseudo-aléatoire d'octets
- mcrypt_create_iv() - Crée un vecteur d'initialisation (IV) à partir d'une source aléatoire
