Entrada

funcion php generar password

El siguiente script es una función en php que genera nuevos password aleatoriamente automaticamente basándose en una serie de patrones tales como la longitud y la fuerza, ésta no es mas que la complejidad de la password que viene dada por si la password contiene consonantes en mayúsculas, vocales en mayúsculas, números y algunos caracteres especiales como el % o el $

A la función de generar password se le pasan 2 parámetros la longitud y la fuerza como he explicado antes. Devuelve el password que se genera automáticamente y de manera aleatorio entre una serie de carácteres.

Los parámetros que yo uso son 9 y 4 respectivamente. Es decir que voy a generar una password de 9 caracteres de longitud y que va a contener consonantes y vocales en mayúsculas y números.

Una vez que se asignan los parámetros que se van a usar el script de generar password simplemente va seleccionando caracteres alternativamente entre el string de vocales y el de consonantes.

Esta aplicación es muy útil y necesaria en el típico formulario de recordar contraseña que hay en casi todos los sites.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function NuevoPassword($longitud,$fuerza)
  {
        $vocales = 'aeiouy';
        $consonantes = 'bcdfghjklmnpqrstvwxz';
        if ($fuerza & 1)
        {
            $consonantes .= 'BDGHJLMNPQRSTVWXZ';
        }
        if ($fuerza & 2)
        {
            $vocales .= "AEUY";
        }
        if ($fuerza & 4)
        {
            $consonantes .= '23456789';
        }
        if ($fuerza & 8 )
        {
            $consonantes .= '@#$%';
        }

        $password = '';
        $alt = time() % 2;
        for ($i = 0; $i < $longitud; $i++)
        {
            if ($alt == 1)
            {
                $password .= $consonantes[(rand() % strlen($consonantes))];
                $alt = 0;
            }
            else
            {
                $password .= $vocales[(rand() % strlen($vocales))];
                $alt = 1;
            }
        }

        return $password;
    }

En la función estoy usando un operador bit a bit del tipo

1
if ($fuerza & 1) {}

Que quiere decir lo siguiente

```$a & $b``` And (y) Los bits que están activos en ambos $a y $b son activados.

También se podría haber usado con total normalidad del operador de comparación ==

Esta entrada está licenciada bajo CC BY 4.0 por el autor.