Generación de cadenas aleatorias en PHP: ¿cómo hacerlo correctamente y de forma segura?
¡Hola a todos! Soy nuevo en PHP y estoy escribiendo un sitio pequeño. Necesito generar cadenas aleatorias para tokens de sesión, contraseñas temporales e identificadores de enlaces.
Encontré en internet este código:
```php
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
```
Pero me preocupan varios puntos:
1. La función `rand()` — he oído que no es muy aleatoria.
2. Si necesito 1000 cadenas, el script funciona lento.
3. No sé si esto es adecuado para fines criptográficos (tokens).
¿Se puede usar esta función para generar contraseñas? ¿Cómo hacer que la generación sea realmente aleatoria y segura? ¿Hay funciones integradas en PHP para esto? Agradecería una explicación detallada con ejemplos.
Versión