-
-
Save felipelavinz/9656913 to your computer and use it in GitHub Desktop.
<?php | |
// cuántos bytes deseas generar? | |
$bytes = 32; | |
// obtener bytes semi-aleatorios | |
$rand = openssl_random_pseudo_bytes( $bytes ); | |
// $rand = "óx3OM·¸Z ÅÀKŸÅ7 #õ˜cb4G8Â,7OPc"; | |
// esta cadena puede tener caracteres de control o no representables | |
// transformar a hexadecimal para obtener solamente caracateres representables | |
$to_hex = bin2hex( $rand ); | |
// $to_hex = "f378334f4db7b85aa0c511c04b9fc51d370923f5986362344738c22c374f5063"; | |
// la cadena resultante tiene el doble de caracteres que la cantidad de bytes pseudo aleatorios |
chevereto
commented
Mar 23, 2014
@chevereto las alternativas que planteas se puede considerar cuando openssl_random_pseudo_bytes()
no está disponible y no es posible instalarlo (la que recurre a mcrypt_create_iv()
es particularmente interesante) pero al parecer son de menos calidad que la primera, ya que ésta incorpora aleatoriedad de varias fuentes, entre ellas /dev/urandom y varias más.
En los comentarios de http://www.eschrade.com/page/generating-secure-cross-site-request-forgery-tokens-csrf/ uno miembro del proyecto Zend Framework 2 indica justamente que para generar tokens anti-CSRF recurren primero a openssl_random_pseudo_bytes()
luego a mcrypt_create_iv()
y luego a mt_rand()
.
El código al que hace referencia está en https://github.com/zendframework/zf2/blob/master/library/Zend/Math/Rand.php