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

0
(0)

Publicado

Aviso importante web en obras

Es posible que el contenido que estás visualizando tenga un formato un poco raro o que se haya perdido algún contenido. Esto se debe a que en 2023/09 decidí renovar la página y con más de 1000 escritos el trabajo de irlos revisando uno por uno es agotador. Poco a poco iré corrigiendo todos los contenidos. ¡Gracias por la comprensión!

Portada ejercicio generador de contraseñas seguras

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.

[vc_custom_heading text=»¿Como queda el documento js?» font_container=»tag:h3|text_align:left» use_theme_fonts=»yes»]

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *