Foto de una pantalla mostrando código PHP
Siendo desarrollador web y administrador de sistemas, tengo que usar un montón de contraseñas, en un principio usaba largas contraseñas compuestas con algunas palabras base y algunos caracteres para identificar el sitio o servicio en el que lo iba a usar, algo como esto:

mi-servicio-base-1234
mi-otro-servicio-base-1234
etc...

De este modo podía recordar fácilmente cualquier contraseña sin importar cuantas tuviese, pero entonces me cansé de dicho sistema, especialmente porque es relativamente fácil de adivinar una vez que se ha encontrado el patrón, entonces decidí crear mi generador de contraseñas algo como lo que Safari hace, (por alguna razón nunca uso los generados por Safari). Y el resultado, para PHP, es el siguiente:

Primero tenemos un arreglo con los caracteres que queremos usar, por ejemplo:
<?php
$chars = array("a", "A", "B", "b", "c", "C", "1", "2", "3");
?>
Luego una pequeña función para asegurarnos de que no haya caracteres repetidos seguidos:
<?php
function indx($chars, $last = false)
{   if($last !== false):
        do
        {   $indx = rand(0,(count($chars)-1));
        }
        while($indx == $last);
    else:
        $indx = rand(0,(count($chars)-1));
    endif;
    return $indx;
}
?>
Luego la función para generar los bloques de caracteres:
<?php
function chunk($chars, $amount)
{   $last = false;
    $indx = array();
    $chunk = '';
    for($i = 0; $i < $amount; $i++):
        $indx[] = $last = indx($chars, $last);
    endfor;
    foreach($indx as $ind):
        $chunk .= $chars[$ind];
    endforeach;
    return $chunk;
}
?>
Para usar, simplemente es asi, el primer parámetro es el arreglo con los caracteres y el segundo, la longitud que queremos para la contraseña de el siguiente modo:
<?php
echo chunk($chars, 24);
?>
Finalmente, si queremos que se parezca más a las de Safari, (grupos de caracteres separados por un delimitador), se puede hacer algo como esto:
<?php
for($i = 1; $i <= 5; $i++):
    if($i > 1):
        echo '-';
    endif;
    echo chunk($chars, 3);
endfor;
?>
¡Y eso es todo! Un simple generador de contraseñas para PHP.

No hay comentarios:

Publicar un comentario

Última entrada

Campeche, la ciudad fantasma

Siempre he dicho que Campeche es una ciudad bonita para visitar llegando en la mañana y saliendo a la tarde/noche, ya que suele ser muy tran...

Entradas Populares

(C) Copyright 2018, Todos los derechos reservados Daniel Estrella. Tema desarrollado por colorlib y editado por Daniel Estrella.