Generador de Contraseñas con PHP

Les presento una opción diferente al md5, pero no deja de ser eficaz, un generador de contraseñas escrito en su totalidad en php.


<?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);
    ?> 

This entry was posted on Monday, February 18th, 2008 at 11:57 pm and is filed under Desarrollo Web, PHP. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply