Toolbit

Generador de contraseñas

Genera contraseñas aleatorias y seguras con longitud y reglas configurables.

¿Qué hace segura a una contraseña?

La fortaleza de una contraseña frente a un ataque de fuerza bruta depende casi exclusivamente de dos factores: cuántos símbolos distintos puede tener cada posición (el tamaño del "alfabeto") y cuántas posiciones tiene en total (la longitud). Juntos determinan la entropía, medida en bits, que indica cuántas combinaciones posibles existen: cada bit adicional duplica ese número.

Una contraseña de 8 caracteres usando solo minúsculas tiene un alfabeto de 26 símbolos y una entropía de 8 × log₂(26) ≈ 37.6 bits — unas 200 mil millones de combinaciones, que una GPU moderna prueba en cuestión de horas. La misma longitud combinando minúsculas, mayúsculas, números y símbolos (un alfabeto de casi 94 símbolos) sube a 8 × log₂(94) ≈ 52.4 bits, miles de veces más combinaciones. Pero alargar la contraseña es casi siempre más efectivo que ampliar el alfabeto: pasar de 8 a 16 caracteres solo con minúsculas ya da 16 × log₂(26) ≈ 75.2 bits, más resistente que combinar todos los tipos de carácter en 8 posiciones.

Por qué la aleatoriedad importa tanto como la longitud

Toda esta matemática de entropía asume que cada carácter se eligió de forma verdaderamente aleatoria entre todo el alfabeto disponible. Si en cambio se sigue un patrón predecible (una palabra del diccionario, una fecha, reemplazar letras por símbolos parecidos como a por @), el espacio real de combinaciones que un atacante necesita probar se reduce drásticamente, sin importar cuántos bits "en teoría" tenga la contraseña. Los ataques de diccionario y las listas de contraseñas filtradas explotan exactamente esta brecha entre entropía teórica y entropía real.

Por eso esta herramienta no arma la contraseña combinando palabras o patrones: elige cada carácter de forma independiente y uniforme dentro del alfabeto seleccionado.

Por qué crypto.getRandomValues y no Math.random()

Math.random() en JavaScript está pensado para casos de uso generales (animaciones, muestreos, juegos), no para criptografía: su algoritmo interno (generalmente un PRNG de tipo xorshift) puede tener su estado interno reconstruido a partir de un puñado de valores generados, lo que en teoría permitiría predecir la salida futura. Para generar contraseñas, claves o tokens hace falta un generador criptográficamente seguro, cuya salida sea computacionalmente imposible de distinguir de ruido verdaderamente aleatorio.

crypto.getRandomValues, parte de la Web Crypto API disponible en todos los navegadores modernos, está diseñado exactamente para esto: obtiene su entropía del generador de números aleatorios del sistema operativo. Esta herramienta usa esa función exclusivamente — nunca Math.random() — para elegir cada carácter de la contraseña generada.

Caracteres ambiguos

Algunos símbolos son fáciles de confundir entre sí según la fuente tipográfica: el cero (0) y la letra O mayúscula, o el uno (1), la letra ele minúscula (l) y la i mayúscula (I). Si la contraseña se va a transcribir a mano (leerla en una pantalla y tipearla en otro dispositivo, por ejemplo), excluir estos caracteres ambiguos reduce errores de transcripción a costa de una pérdida mínima de entropía.

Cómo usar esta herramienta

Elige la longitud deseada y qué tipos de carácter incluir (minúsculas, mayúsculas, números, símbolos), con la opción de excluir caracteres ambiguos si hace falta. La contraseña se genera al instante con crypto.getRandomValues, y el medidor de fortaleza muestra la entropía resultante en bits junto con una clasificación (débil, aceptable, fuerte, muy fuerte). Todo el cálculo ocurre en el navegador: la contraseña generada nunca se envía a ningún servidor ni queda registrada en la URL, a diferencia de otras herramientas de este sitio pensadas para compartir resultados.