¿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.

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).
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.