Cómo crear un generador de contraseñas seguras en Java (en 5 pasos)

Aprende a crear tu propio generador de contraseñas seguras en Java. Fácil, rápido y adaptable para cualquier proyecto personal.

Anuncios

¿Cansado de “123456” o “password”? Hora de ponerle candado digital a tus cuentas. Aprende a programar un generador de contraseñas seguras en Java, configurable y listo para usar en cualquier proyecto. Ideal para principiantes y para quienes quieren presumir seguridad con estilo geek.

Cómo crear un generador de contraseñas seguras en Java (en 5 pasos)

Paso 1: Crea el proyecto y la clase principal

Abre tu IDE y crea un proyecto nuevo llamado GeneradorContrasenas. Agrega una clase llamada GeneradorContrasenas.

Te recomiendo -> Tutorial de Java: Crea un Convertidor de Números Romanos en 5 Pasos

Paso 2: Pide al usuario la longitud y características de la contraseña

Usa la clase Scanner para que el usuario elija la longitud y qué incluir en la contraseña (mayúsculas, minúsculas, números, símbolos).

Anuncios
import java.util.Scanner;

public class GeneradorContrasenas {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Longitud de la contraseña: ");
        int longitud = scanner.nextInt();

        System.out.print("¿Incluir mayúsculas? (s/n): ");
        boolean usarMayus = scanner.next().equalsIgnoreCase("s");

        System.out.print("¿Incluir minúsculas? (s/n): ");
        boolean usarMinus = scanner.next().equalsIgnoreCase("s");

        System.out.print("¿Incluir números? (s/n): ");
        boolean usarNums = scanner.next().equalsIgnoreCase("s");

        System.out.print("¿Incluir símbolos? (s/n): ");
        boolean usarSimb = scanner.next().equalsIgnoreCase("s");

        // Aquí irá la generación de la contraseña
        scanner.close();
    }
}

Paso 3: Arma el generador de contraseñas

Crea un método que arme la contraseña combinando los caracteres según la selección del usuario.

import java.security.SecureRandom;

public static String generarContrasena(int longitud, boolean mayus, boolean minus, boolean nums, boolean simb) {
    String mayusculas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    String minusculas = "abcdefghijklmnopqrstuvwxyz";
    String numeros = "0123456789";
    String simbolos = "!@#$%^&*()-_+=<>?";

    StringBuilder pool = new StringBuilder();
    if (mayus) pool.append(mayusculas);
    if (minus) pool.append(minusculas);
    if (nums) pool.append(numeros);
    if (simb) pool.append(simbolos);

    if (pool.length() == 0) return "Selecciona al menos una opción.";

    SecureRandom random = new SecureRandom();
    StringBuilder contrasena = new StringBuilder();

    for (int i = 0; i < longitud; i++) {
        int idx = random.nextInt(pool.length());
        contrasena.append(pool.charAt(idx));
    }
    return contrasena.toString();
}

Paso 4: Integra todo y muestra varias contraseñas de ejemplo

Haz la llamada al método y muestra tres contraseñas generadas como ejemplo.

// Dentro del método main, justo antes de cerrar el scanner:
for (int i = 1; i <= 3; i++) {
    String pwd = generarContrasena(longitud, usarMayus, usarMinus, usarNums, usarSimb);
    System.out.println("Contraseña segura #" + i + ": " + pwd);
}

El código final completo queda así:

import java.util.Scanner;
import java.security.SecureRandom;

public class GeneradorContrasenas {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Longitud de la contraseña: ");
        int longitud = scanner.nextInt();

        System.out.print("¿Incluir mayúsculas? (s/n): ");
        boolean usarMayus = scanner.next().equalsIgnoreCase("s");

        System.out.print("¿Incluir minúsculas? (s/n): ");
        boolean usarMinus = scanner.next().equalsIgnoreCase("s");

        System.out.print("¿Incluir números? (s/n): ");
        boolean usarNums = scanner.next().equalsIgnoreCase("s");

        System.out.print("¿Incluir símbolos? (s/n): ");
        boolean usarSimb = scanner.next().equalsIgnoreCase("s");

        for (int i = 1; i <= 3; i++) {
            String pwd = generarContrasena(longitud, usarMayus, usarMinus, usarNums, usarSimb);
            System.out.println("Contraseña segura #" + i + ": " + pwd);
        }
        scanner.close();
    }

    public static String generarContrasena(int longitud, boolean mayus, boolean minus, boolean nums, boolean simb) {
        String mayusculas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        String minusculas = "abcdefghijklmnopqrstuvwxyz";
        String numeros = "0123456789";
        String simbolos = "!@#$%^&*()-_+=<>?";

        StringBuilder pool = new StringBuilder();
        if (mayus) pool.append(mayusculas);
        if (minus) pool.append(minusculas);
        if (nums) pool.append(numeros);
        if (simb) pool.append(simbolos);

        if (pool.length() == 0) return "Selecciona al menos una opción.";

        SecureRandom random = new SecureRandom();
        StringBuilder contrasena = new StringBuilder();

        for (int i = 0; i < longitud; i++) {
            int idx = random.nextInt(pool.length());
            contrasena.append(pool.charAt(idx));
        }
        return contrasena.toString();
    }
}

Paso 5: Prueba el programa en consola

Ejemplo de ejecución:

Longitud de la contraseña: 10  
¿Incluir mayúsculas? (s/n): s  
¿Incluir minúsculas? (s/n): s  
¿Incluir números? (s/n): s  
¿Incluir símbolos? (s/n): n  
Contraseña segura #1: xUBY6v2ApQ  
Contraseña segura #2: bfA2ZYxFq1  
Contraseña segura #3: uzLhCz8R0P  

Conclusión

A lo largo de este tutorial, creaste un generador de contraseñas seguras en Java, configurable y adaptable a cualquier necesidad.

Aprendiste a solicitar datos al usuario, combinar distintos tipos de caracteres y generar contraseñas realmente difíciles de adivinar.

Además, reforzaste tus habilidades de programación en Java y de lógica práctica. Ahora puedes integrar este generador en tus propios proyectos o compartirlo con quien necesita un refuerzo de seguridad digital.

¿Listo para el siguiente reto? Explora más cursos gratis por tiempo limitado y sigue aprendiendo de manera práctica y divertida.

Anuncios
Henry Hernandez

Henry Hernandez

Me encanta compartir cursos gratuitos y recursos útiles para que sigas aprendiendo sin gastar.

Artículos: 782