Jul12
2005Generador de Contraseñas PHP
Autor: jgarcia | Archivado en: PHP
2005
En muchas de nuestras webs nos resulta útil disponer de un script que genere de forma aleatoria contraseñas.
Una solución fácil para generar passwords con PHP es la siguiente:
<?php
// *********************************************************************
// ** Fichero: generapassword.php
// ** Descripción: Generador de Contraseñas de una longitud dada.
// ** Argumentos de entrada: $longitud es el número de caracteres
// ** de la contraseña generada.
// ** Autor: Juan García
// ** Fecha: Julio 2005
// *********************************************************************
function GeneraPassword($longitud)
{
/* Se valida la longitud proporcionada. Debe ser número y mayor de cero.
Si es menor o igual a cero le asignamos la longitud por defecto.
Si es mayor de 32 le asignamos 32.
*/
if(!is_numeric($longitud) || $longitud < = 0)
{
$longitud = 8;
}
if($longitud > 32)
{
$longitud = 32;
}/* Asignamos el juego de caracteres al array $caracteres para generar la contraseña.
Podemos añadir más caracteres para hacer más segura la contraseña.
*/
$caracteres = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-/*%&_’;/* Introduce la semilla del generador de números aleatorios mejorado */
mt_srand(microtime() * 1000000);for($i = 0; $i < $longitud; $i++)
{
/* Genera un valor aleatorio mejorado con mt_rand, entre 0 y el tamaño del array
$caracteres menos 1. Posteríormente vamos concatenando en la cadena $password
los caracteres que se van eligiendo aleatoriamente.
*/
$key = mt_rand(0,strlen($caracteres)-1);
$password = $password . $caracteres{$key};
}return $password;
}
/* Llamamos a la función GeneraPassword y mostramos la clave generada.*/
echo GeneraPassword(10);
?>
Puedes ejecutar el script y probar la generación de sucesivas contraseñas actualizando la página (F5).









Muy bueno Juan!! script apuntado para la lista.
Hola, tu código es bueno,
Felicitaciones
pero tiene un error en la linea de $password = $password . $caracteres{$key};
si podrias ayudarme con eso please ya que recien estoy empezando a programar en php.
Gracias
Quizás esta función tambien os puede resultar de utilidad:
// **********************************************************************
// ** Generador de claves faciles **
// **********************************************************************
function GeneradorClavesFaciles($longitud) {
// Copyright Rafa Marruedo, 2006 | http://www.vibra.es/codigo
// Generador de claves fáciles de recordar, con el tamaño en caracteres indicado.
// Ejemplo de uso:
// echo GeneradorClavesFaciles(6);
// mostrara: ibacem
$key=”"; // la clave que se generará
$vocales=”aeiou”; $numero_de_vocales=strlen($vocales);
$consonantes=”bcdfgjklmnpqrstwxyz”; $numero_de_consonantes=strlen($consonantes);
while ($longitud>0) {
// Con is_int averiguamos si es un ´numero entero, par o impar y lanzamos una vocal o consonante
if (!is_int($longitud/2)) { $key=$key.substr($consonantes,rand(0,$numero_de_consonantes-1),1);} else { $key=$key.substr($vocales,rand(0,$numero_de_vocales-1),1);}
$longitud–;
}
return $key;
}