Generador de Contraseñas
Genera contraseñas seguras con longitud y tipos de caracteres personalizados
Excluir caracteres confusos como 0O, 1lI
¿Qué es un Generador de Contraseñas?
Un generador de contraseñas crea contraseñas aleatorias y difíciles de adivinar según longitud y reglas de caracteres elegidas. Un buen generador usa aleatoriedad criptográficamente segura y combina mayúsculas, minúsculas, números y símbolos solo cuando el sistema de destino los acepta. Las contraseñas fuertes reducen ataques de diccionario, fuerza bruta y credential stuffing, pero no sustituyen hábitos como usar un gestor, mantener una contraseña distinta por cuenta y activar autenticación multifactor. Las contraseñas muy complejas no deberían memorizarse ni reutilizarse; deben almacenarse de forma segura. En sistemas compartidos también importan rotación, propiedad y reglas de acceso.
Cómo usar
Pasos de generación
- Selecciona la longitud de la contraseña (se recomienda un mínimo de 12 caracteres)
- Marca los tipos de caracteres: mayúsculas, minúsculas, números, símbolos
- Opcionalmente excluye caracteres confusos como 0O, 1lI
- Haz clic en el botón Generar, repite hasta quedar satisfecho
Robustez de la contraseña
- Débil: menos de 8 caracteres o un solo tipo de carácter
- Aceptable: de 8 a 11 caracteres con letras y números combinados
- Buena: de 12 a 15 caracteres con múltiples tipos de caracteres
- Fuerte: más de 16 caracteres con todos los tipos de caracteres
Consejos de seguridad
- Todas las contraseñas se generan localmente, nunca se suben a los servidores
- Usa contraseñas diferentes para diferentes sitios web
- Usa un gestor de contraseñas para almacenarlas de forma segura
- Cambia periódicamente las contraseñas de cuentas importantes
- Evita usar información personal en las contraseñas
Casos de uso
Principio técnico
El generador de contraseñas obtiene aleatoriedad de crypto.getRandomValues(new Uint32Array(n)), que rellena un array tipado con valores pseudoaleatorios criptográficamente seguros provenientes del pool de entropía del sistema operativo (getrandom en Linux, BCryptGenRandom en Windows, SecRandomCopyBytes en macOS/iOS). Se trata de un CSPRNG según lo definido por la W3C Web Cryptography API, a diferencia de Math.random(), que en V8 utiliza el algoritmo xorshift128+ y está explícitamente documentado como no criptográfico y predecible a partir de una pequeña muestra de salidas. El conjunto de caracteres se ensambla a partir de las clases seleccionadas por el usuario: mayúsculas (26 letras A-Z), minúsculas (26 letras a-z), dígitos (10 caracteres 0-9) y símbolos (32 caracteres de !@#$%^&*()_+-=[]{}|;:,.<>?), lo que da un pool máximo de 94 caracteres. Un conjunto personalizado o una lista de exclusión (incluyendo un filtro de caracteres ambiguos que elimina i, I, l, L, 1, o, O, 0) refina aún más el pool. Cada carácter de la contraseña se selecciona tomando array[i] % pool.length, distribución uniforme porque la salida del CSPRNG es uniforme sobre 32 bits y el sesgo de módulo (|pool| no divide 2^32 exactamente) es despreciable para pools de menos de 256 caracteres: el sesgo es inferior al 0.00000006%, muy por debajo de cualquier preocupación práctica. La fortaleza de la contraseña se mide por el tamaño del espacio de búsqueda: para un pool de tamaño C y longitud L, el número de contraseñas posibles es C^L. La entropía en bits es log2(C^L) = L x log2(C). Para una contraseña de 16 caracteres con las cuatro clases habilitadas (C=94), esto produce 94^16 ≈ 4.4 x 10^31 combinaciones, o unos 105 bits de entropía. A una tasa hipotética de 10^12 intentos por segundo (aproximadamente el rendimiento de un gran clúster de GPU contra un hash rápido como NTLM), la búsqueda exhaustiva tomaría aproximadamente 4.4 x 10^19 segundos, mucho más que la edad del universo. Este modelo asume que el atacante debe probar cada combinación (sin atajos de diccionario o basados en patrones) y que la contraseña se hashea con un algoritmo lento y con sal como bcrypt o Argon2id en lugar de almacenarse en texto plano. NIST SP 800-63B recomienda un mínimo de 8 caracteres para contraseñas elegidas por el usuario y al menos 6 caracteres generados aleatoriamente para credenciales generadas por máquina, con el conjunto de caracteres documentado. El rango de longitud del generador de 4 a 64 caracteres cubre desde códigos PIN hasta credenciales de máquina de alta entropía. La opción de empezar con letra asegura que el primer carácter se elige de [A-Za-z], lo que satisface sistemas heredados que requieren que las contraseñas comiencen con una letra.
- Fuente CSPRNG: crypto.getRandomValues() obtiene entropía del CSPRNG del núcleo del SO (getrandom/BCryptGenRandom/SecRandomCopyBytes), a diferencia de Math.random() (xorshift128+), no es predecible, no se puede sembrar desde la página y es adecuado para generación de credenciales.
- Matemáticas del espacio de caracteres: con las cuatro clases habilitadas, el tamaño del pool es 94; la entropía por carácter es log2(94) ≈ 6.55 bits. Una contraseña de 16 caracteres tiene ~105 bits de entropía; duplicar la longitud a 32 eleva esto a ~210 bits.
- Selección por módulo: array[i] % pool.length mapea la salida de 32 bits del CSPRNG a un índice de carácter; el sesgo es inferior al 6 x 10^-8 % para pools de menos de 256 caracteres, lo que lo hace criptográficamente irrelevante.
- Modelo de resistencia a fuerza bruta: a 10^12 intentos/segundo (escala de clúster de GPU), una contraseña de 16 caracteres con 94 símbolos tomaría ~10^19 segundos para agotarse, pero esto asume un hash rápido; bcrypt con factor de costo 12 reduce al atacante a ~10^4 intentos/segundo, haciendo que incluso contraseñas de 8 caracteres sean resilientes.
- Exclusión de caracteres ambiguos: el filtro elimina {i, I, l, L, 1, o, O, 0} (8 caracteres), lo que reduce el pool de 94 a 86, costando aproximadamente 0.6 bits de entropía por carácter, aceptable por la ganancia en usabilidad en escenarios de transcripción manual.
- Alineación con NIST SP 800-63B: el estándar requiere un mínimo de 6 caracteres elegidos aleatoriamente para secretos generados por máquina y recomienda documentar el espacio de caracteres; los preajustes del generador (Simple 8 caracteres, Fuerte 20 caracteres) se asignan a diferentes niveles de garantía.
- Historial en localStorage: las últimas 10 contraseñas generadas se persisten en window.localStorage, que está acotado al origen y perfil del navegador; borrar el historial las elimina del almacenamiento, pero una herramienta forense a nivel de disco podría recuperarlas porque localStorage se almacena como una base de datos SQLite en texto plano en el directorio del perfil del navegador.
Ejemplos
Contraseña fuerte (clases de caracteres mixtas)
Kx9#mP2$vL7@nQ4! - 16 caracteres, las cuatro clases (mayúscula/minúscula/dígito/símbolo)
Fortaleza: extremadamente alta; incluso a 10 000 millones de intentos por segundo, romperla por fuerza bruta llevaría siglosCódigo PIN (4 dígitos)
8527 - 4 dígitos numéricos
Fortaleza: 10.000 combinaciones; solo es adecuado para desbloqueo de dispositivos con limitación de intentos y bloqueo, no para cuentas en líneaComparativa de fortaleza de contraseñas
8 caracteres, solo minúsculas : 26^8 ≈ 2,08e11 combinaciones
8 caracteres, clases mixtas : 94^8 ≈ 6,10e15 combinaciones
16 caracteres, clases mixtas : 94^16 ≈ 3,7e31 combinaciones
Nota: cada carácter adicional multiplica el espacio de claves por 94, no por 8 - la longitud importa más que el número de clasesPreguntas frecuentes
¿La contraseña se genera en mi navegador?
Sí. La página usa crypto.getRandomValues de la Web Crypto API, que proporciona bytes aleatorios criptográficamente seguros. La contraseña nunca sale de tu dispositivo, no se registra y no se deriva de una semilla determinista. Recarga la página para iniciar una secuencia de entropía nueva si quieres asegurarte.
¿Qué longitud y combinación de caracteres debería elegir?
Para cuentas en línea, 16 caracteres o más con mayúsculas, minúsculas, dígitos y símbolos es el mínimo actual. Para contraseñas maestras (gestor de contraseñas, claves de cifrado), 20 caracteres o más, o una frase de paso de 6-7 palabras, es más seguro. Pasado cierto punto, la longitud importa más que la complejidad del conjunto de caracteres.
¿Por qué algunos sitios rechazan la contraseña que acabo de generar?
Algunos sitios siguen aplicando restricciones sorprendentes: longitud máxima (a menudo 12-20), prohibición de símbolos, solo símbolos concretos permitidos o ningún espacio en blanco. La página ofrece interruptores de caracteres para que ajustes las reglas. Reporta los sitios problemáticos: esas políticas debilitan activamente la seguridad.
¿Hay caracteres que se evitan a propósito?
Si activas la opción «evitar caracteres parecidos entre sí», el generador excluye 0/O, 1/l/I y pares similares que son fáciles de confundir al copiar desde un papel o una nota adhesiva. Desactívala para obtener la máxima entropía cuando solo vayas a usar la contraseña digitalmente.
¿Una contraseña aleatoria larga es más segura que una frase de paso?
Con la misma entropía, ambas son igual de difíciles de descifrar por fuerza bruta. Una contraseña mixta de 16 caracteres equivale aproximadamente a una frase de paso de 6 palabras tomadas al azar de una lista de 2000. Las frases de paso son más fáciles de teclear y recordar; las cadenas aleatorias puras son más fáciles de pegar desde un gestor. Elige según el caso de uso.
¿Puedo confiar en esto para la clave maestra de un gestor de contraseñas?
Sí: la fuente de aleatoriedad es la misma Web Crypto API que tu navegador usa para las claves HTTPS. Dicho esto, para secretos de altísimo valor (claves maestras, códigos de recuperación), mucha gente prefiere tirar dados (diceware) o usar una herramienta sin conexión, simplemente para sacar el navegador de la cadena de confianza.
¿Debería guardar aquí la contraseña generada?
No. La página no guarda contraseñas; cópiala de inmediato a un gestor de contraseñas (1Password, Bitwarden, KeePass o el gestor integrado del navegador). Cerrar la página o pulsar recargar la descarta de forma permanente.