🔑 Proyecto: "Contraseña Fuerte" - Construye un Generador de Contraseñas Seguras con POO
- Coachs Desarrollo
- 19 ago
- 4 Min. de lectura
¡Hola, desarrolladores! ¿Listos para crear algo que no solo es práctico, sino que también mejora su seguridad digital? Este proyecto les guiará a través de la creación de un generador de contraseñas fuertes utilizando los principios de la Programación Orientada a Objetos (POO) en JavaScript. A lo largo del camino, aplicarán conceptos clave como clases, encapsulamiento, y el manejo de estructuras de datos complejas. ¡Vamos a empezar!
Objetivo del proyecto
Al finalizar este proyecto, serás capaz de:
Modelar un sistema real (como un generador de contraseñas) utilizando el paradigma de Programación Orientada a Objetos (POO).
Declarar y utilizar clases como PasswordGenerator para encapsular la lógica y los datos.
Implementar propiedades privadas (#propiedad) para proteger la lógica interna del generador.
Crear métodos públicos y privados para generar y validar la complejidad de las contraseñas.
Manejar estructuras de datos como arreglos y cadenas de texto para manipular caracteres dinámicamente.
Validar contraseñas según criterios de seguridad específicos (longitud, uso de símbolos, mayúsculas, etc.).
🧠 Conceptos clave antes de empezar
class: Define la plantilla para crear objetos.
constructor(): Se usa para inicializar un nuevo objeto cuando se crea.
this: Hace referencia al objeto actual dentro de la clase.
#propiedad: Convierte una propiedad en privada, lo que significa que solo es accesible desde dentro de la clase.
get y set: Métodos para acceder y modificar propiedades de manera controlada (getters y setters).
Métodos de Arreglo: push(), filter(), map() para organizar caracteres.
Manipulación de Cadenas: split(), join(), toUpperCase(), toLowerCase() para construir contraseñas.
Aleatoriedad: Math.random() y Math.floor() para seleccionar caracteres de forma aleatoria.
🧪 Desarrollo paso a paso
Paso 1 - Fase 1: Estructura de la Clase (PasswordGenerator)
El primer paso es definir la clase principal de tu proyecto: PasswordGenerator. Esta clase será la "máquina" detrás de toda la lógica.
Crea un archivo JavaScript (ej. app.js).
Define la clase PasswordGenerator.
Dentro de la clase, define las propiedades necesarias para el generador. Algunas de estas propiedades deben ser privadas para mantener la seguridad y el encapsulamiento del código. Por ejemplo, #longitud y #caracteresDisponibles.
Usa el constructor para inicializar tu objeto. Este es el lugar ideal para establecer la longitud de la contraseña y los grupos de caracteres que se pueden usar (letras, números, símbolos, etc.).
JavaScript

Paso 2 - Fase 2: Métodos y lógica de generación
Ahora es el momento de construir la funcionalidad principal. Dentro de tu clase, crearás métodos para generar la contraseña
Crea un método privado como #createCharSet() para combinar todos los tipos de caracteres (mayúsculas, minúsculas, números, símbolos) según las opciones que reciba el constructor.
Implementa un método público llamado generatePassword() que use un bucle para seleccionar caracteres aleatorios del conjunto de caracteres disponibles y construir la contraseña final. Utiliza Math.random() y Math.floor() para la selección.
Asegúrate de usar this para referenciar las propiedades dentro de tus métodos, tanto las públicas como las privadas.
JavaScript

Paso 3 - Fase 3: Validación y pruebas de seguridad
Una contraseña generada no es útil si no cumple con los requisitos de seguridad. En este paso, validarás que las contraseñas sean robustas.
Crea un método público como checkSecurity() o un método privado #validatePassword() para verificar que la contraseña generada cumpla con los criterios mínimos de seguridad.
Los criterios pueden incluir: tener una longitud mínima, contener al menos un número, una mayúscula, una minúscula y un símbolo.
Usa métodos de cadena como includes() y RegExp para simplificar la validación.
Paso 4 - Fase 4: Personalización y Cierre
Una vez que tu generador básico funciona, puedes agregar opciones para hacerlo más versátil.
Añade getters y setters para la longitud de la contraseña, permitiendo modificarla de forma controlada después de la creación del objeto.
Crea un script simple que instancia tu clase y llame a los métodos.
Prueba tu generador con diferentes longitudes y opciones para asegurarte de que funciona como se espera.
✅ Criterios de logro
Diseño de la Clase: La clase PasswordGenerator debe estar bien estructurada, con propiedades y métodos claramente definidos.
Encapsulamiento: Uso correcto de propiedades privadas (#) para proteger la lógica interna, como el conjunto de caracteres o la longitud.
Funcionalidad de Generación: El método de generación debe crear contraseñas con la longitud y los tipos de caracteres solicitados.
Lógica de Validación: El sistema debe incluir una función que evalúe la fuerza de la contraseña generada según criterios claros (ej. longitud, tipos de caracteres).
Uso de Métodos: Implementación efectiva de métodos de arreglo y cadena de texto para manipular y construir la contraseña.
Modularidad: El código debe ser legible y modular, con funciones dedicadas a tareas específicas.
🤯 Retos adicionales
¿Quieres llevar tu proyecto al siguiente nivel? ¡Prueba con estos retos!
Agregar un nivel de entropía: Desarrolla una función que calcule la "fuerza" de la contraseña en una escala numérica, basándose en la variedad y longitud de los caracteres.
Generador de contraseñas memorables: Crea un modo alternativo que genere contraseñas más fáciles de recordar, pero que sigan siendo seguras, por ejemplo, usando una lista de palabras aleatorias.
(Blog hecho por Frank Iglesias)




Comentarios