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 ==