[PHP] Generador de contraseñas
Hola Mundo, espero estén teniendo un buen día tomando unos deliciosos bits de café, hoy les presentaré un código bastante útil que de seguro los ayudará para la gestión de registros y verificamiento en sus aplicaciones.
La idea es simple, generaremos una contraseña de manera aleatoria combinando letras y números, sin embargo, aunque claves de este tipo son "fuertes" para algunos sitios, al final utilizaremos un método para crear un hash de contraseña con el string generado anteriormente.
Este código es útil para muchas cosas. Desde verificar la contraseña ingresada por nuestros usuarios, como para renovarla.
El código en PHP correspondiente al planteamiento es:
function generarContra(){
$cadena = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
$longitudCadena=strlen($cadena);
$pass = "";
$longitudPass=10;
for($i=1 ; $i<=$longitudPass ; $i++){
$pos=rand(0,$longitudCadena-1);
$pass .= substr($cadena,$pos,1);
}
return password_hash($pass, PASSWORD_BCRYPT);
}
echo generarContra();
- Definimos una cadena de caracteres lo suficientemente poblada con letras en mayúscula, minúscula y números.
- Se obtiene la longitud de la cadena de caracteres.
- Definimos la variable que contendrá la contraseña.
- Se define la longitud de la contraseña en este caso utilizaremos 10 pero esto dependerá de cada uno.
- Creamos la contraseña
- Definimos un número aleatorio entre 0 y -1 de la longitud de la cadena de caracteres
- Vamos formando la contraseña, añadiendo a $pass la letra correspondiente a la posición $pos en la cadena de caracteres definida.
- Retornamos la variable $pass junto con función password_hash($pass, PASSWORD_BCRYPT).
- Finalmente, imprimimos la contraseña generada por nuestra función.
La función password_hash() crea un nuevo hash de contraseña usando un algoritmo de hash fuerte de único sentido. El algoritmo BCRYPT nos creará una cadena de 72 caracteres como máximo.
Si queremos utilizar esta función para verificar que la contraseña que ingresaron nuestros usuarios corresponde a la que tendremos guardada en nuestras bases de datos, lo que se debe hacer es:
- Guardar la variable $pass con la función password_hash().
- Retornar al usuario la variable $pass sin la función password_has().
- Utilizar la función password_verify () donde le pasaremos dos paramétros los cuales serán: La contraseña que ingresará el usuario en el formulario y la contraseña con hash que tenemos en nuestra base datos.
Te invito a que si tienes una solución alterna a la que presenté me la compartas.
Saludos!
Comentarios
Publicar un comentario