Toolbit

Generador de contraseñas

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

Longitud y alfabeto: los dos factores que importan

Frente a un ataque de fuerza bruta, la fortaleza de una contraseña depende casi por completo de dos números: cuántos símbolos distintos puede tener cada posición (el tamaño del alfabeto) y cuántas posiciones tiene en total (la longitud). Combinados dan la entropía, medida en bits, que indica cuántas combinaciones posibles hay — cada bit adicional duplica esa cifra.

Ocho caracteres solo en minúsculas usan un alfabeto de 26 símbolos, con una entropía de 8 × log₂(26) ≈ 37.6 bits: unas 200 mil millones de combinaciones, que una GPU actual prueba en horas. La misma longitud combinando minúsculas, mayúsculas, números y símbolos (casi 94 símbolos de alfabeto) sube a 8 × log₂(94) ≈ 52.4 bits, miles de veces más combinaciones posibles. Aun así, alargar la contraseña suele rendir más que ampliar el alfabeto: pasar de 8 a 16 caracteres usando solo minúsculas ya da 16 × log₂(26) ≈ 75.2 bits, más resistente que mezclar los cuatro tipos de carácter en apenas 8 posiciones.

Por qué la aleatoriedad pesa tanto como la longitud

Todos estos cálculos de entropía dan por sentado que cada carácter se eligió de forma verdaderamente aleatoria dentro de todo el alfabeto disponible. Si en cambio hay un patrón detrás — una palabra de diccionario, una fecha, cambiar letras por símbolos parecidos (@ en vez de a) —, el espacio real que un atacante necesita probar se achica muchísimo, sin importar cuántos bits "en teoría" tenga la contraseña. Ese hueco entre entropía teórica y entropía real es exactamente lo que explotan los ataques de diccionario y las listas de contraseñas filtradas. Por eso esta herramienta nunca arma contraseñas combinando palabras o patrones: elige cada carácter de forma independiente y uniforme dentro del alfabeto que se haya seleccionado.

crypto.getRandomValues, no Math.random()

Math.random() está pensado para usos generales — animaciones, muestreos, juegos —, no para criptografía: su algoritmo interno (típicamente un PRNG tipo xorshift) puede reconstruirse a partir de un puñado de valores generados, lo que en teoría permite predecir la salida futura. Generar contraseñas, claves o tokens requiere en cambio un generador criptográficamente seguro, cuya salida sea imposible de distinguir de ruido verdaderamente aleatorio con los recursos de cómputo disponibles.

Para eso existe crypto.getRandomValues, parte de la Web Crypto API presente en todos los navegadores modernos: toma su entropía directamente del generador de números aleatorios del sistema operativo. Esta herramienta usa exclusivamente esa función — nunca Math.random() — para elegir cada carácter de la contraseña.

Caracteres ambiguos

Algunos símbolos se confunden fácilmente según la tipografía: el cero (0) con la letra O mayúscula, o el uno (1) con la ele minúscula (l) y la i mayúscula (I). Cuando la contraseña se va a transcribir a mano — leerla en una pantalla y tipearla en otro dispositivo, por ejemplo — excluir estos caracteres reduce errores de transcripción a cambio de una pérdida mínima de entropía.

Cómo usar esta herramienta

Elige la longitud 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: a diferencia de otras herramientas de este sitio pensadas para compartir resultados, acá la contraseña generada nunca se envía a un servidor ni queda registrada en la URL.

Preguntas frecuentes

¿Por qué no usar Math.random() para generar contraseñas?

Porque Math.random() no es un generador criptográficamente seguro: su salida puede predecirse en muchos motores de JavaScript. Esta herramienta usa crypto.getRandomValues (Web Crypto API), diseñado específicamente para uso criptográfico.

¿Qué significan los bits de entropía?

Es una medida de cuántos intentos, en promedio, necesitaría un atacante para adivinar la contraseña por fuerza bruta: cada bit adicional duplica la cantidad de combinaciones posibles. Más de 80 bits se considera muy resistente incluso a ataques offline prolongados.

¿Se guarda o se envía la contraseña generada a algún servidor?

No. Todo el cálculo ocurre en el navegador; la contraseña nunca se envía a un servidor ni queda registrada en la URL.