Programa que genera una contraseña aleatoria y segura con javascript

Programa que genera una contraseña aleatoria y segura con javascript

0
(0)

Generar una contraseña segura de n caracteres aleatorios puede parecer un reto si nos dejamos deslumbrar por el titular.

Sin embargo si somos capaces de romper el problema en otros más sencillos veremos que en realidad no lo es tanto.

Existen varios conceptos o ideas que te pueden ayudar para sacar provecho de este ejercicio.

¿Preparado?

Enunciado

Escribe un programa que pida por pantalla un número entero al usuario.

Escribe a continuación un script que devuelva por pantalla un número de tantos caracteres como el número entero indicado por la persona.

La contraseña puede estar formada por minúsculas de la a a la z, números y los caracteres _, -, ., $, &, #, @.

Si lo deseas completa la contraseña con mayúsculas y/o otras posibilidades.

Solución del ejercicio

Para resolver este problema lo primero que debemos hacer es trazar un plan.

  1. Paso 1: pedir un número al usuario y transformarlo a entero.
  2. Paso 2: crear un texto con n caracteres dónde n es el número indicado por el usuario.
  3. Paso 3: conseguir ahora que cada letra pase a ser aleatorio.
  4. Paso 4: hemos conseguido escribir una palabra de n caracteres dónde cada una es aleatoria.

¿Como queda el documento js?

<!DOCTYPE html>
<html>
<head>
	<title>Programa generador de contraseñas seguras</title>
	<meta charset="utf-8"/>
</head>
<body>

<script>
	// paso 1 - pedir un número al usuario

	var abecedario = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9",".","-","_","$","&","#","@"];


	var numero = parseInt(window.prompt("escribe un numero"));
	var numeroAleatorio = 3;

	// paso 2 - escribir x caracteres

	for(var i = 0; i<numero; i++){
		numeroAleatorio = parseInt(Math.random()*abecedario.length);
		document.write(abecedario[numeroAleatorio]);
	}

	// paso 3 - conseguir que cada caracter sea aleatorio.

	// paso 4 - tenemos x caracteres aleatorios

</script>



</body>
</html>

Puntualizaciones:

Conseguir una palabra de n caracteres es fácil. Podemos hacerlo con un for o un while.

Para hacer que tengamos un número aleatorio usamos la expresión:

numeroAleatorio = parseInt(Math.random()*abecedario.length)

Fijaros que devolverá un número entre 0 y la longitud del array abecedario. Lo hacemos así porqué de este modo no importa la longitud del array. Podemos ir añadiendo tantos caracteres como necesitemos.

En la variable abecedario

var abecedario = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9",".","-","_","$","&","#","@"];

daros cuenta que no he incluido mayúsculas.

De hacerlo la opción más fácil no  sería escribirlo una por una sino por ejemplo usar el método .toUpperCase() para generar un nuevo array/lista y después concatenarlos.

¡Hola!

Querido lector,

Si te ha gustado este ejercicio te animo a mejorarlo prescindiendo por ejemplo de window.prompt() o document.write() y usar por ejemplo el DOM según explicado en otras secciones de este tutorial.

También podrías por ejemplo buscar el modo de que fuera el usuario quien elija que caracteres quiere añadir: mayúsculas, minúsculas, símbolos especiales o otros. La idea sería generar una lista para cada tipo y concatenar aquellas elegidas por el usuario.

¡Si te ha gustado este contenido te animo a seguirme en mi perfil de empresa de Linkedin!

¿Te ha gustado esta publicación?

¡Valora sobre 5 estrellas esta publicación!

Puntuación media 0 / 5. Votos: 0

Todavía no hay votos. Sé el primero en valorar la entrada.

Si te ha gustado este contenido...

¡Sígueme en las redes!

Vaya, parece que hay puntos a corregir

¿Me ayudas a mejorar?

¿Dónde he fallado?

Francesc Ricart
hola@francescricart.com

Aprender y enseñar. Enseñar y aprender. En el ámbito docente soy docente ocupacional. En el ámbito profesional consultor web. Ofrezco servicios de mejora continua y mantenimiento web. ¿Qué quieres aprender hoy? Encontraréis más acerca de mi en la página sobre mi

No Comments

Post A Comment