Genera contraseñas aleatorias criptograficamente seguras. Personaliza longitud, conjuntos de caracteres y cantidad. Usa Web Crypto API.
Una contraseña fuerte generada por maquina tiene dos propiedades: alta entropía (impredecibilidad) y sin patrones (sin palabras de diccionario, recorridos de teclado, sustituciones).
La entropía se mide en bits. Cada bit duplica el número de contraseñas posibles que un atacante debe probar. Una contraseña elegida uniformemente al azar de un conjunto de N caracteres posibles tiene log2(N) bits de entropía por carácter.
| Conjunto de caracteres | Caracteres disponibles | Entropía por carácter |
|---|---|---|
| Solo minusculas | 26 | 4,7 bits |
| Minusculas + digitos | 36 | 5,2 bits |
| Mayusculas + minusculas + digitos | 62 | 5,9 bits |
| ASCII imprimible completo | 95 | 6,6 bits |
Una contraseña de 20 caracteres del conjunto ASCII imprimible completo tiene aproximadamente 130 bits de entropía. Una contraseña de 20 caracteres limitada a solo minusculas tiene 94 bits. El conjunto de caracteres importa, pero la longitud importa aún más: agregar un carácter del conjunto de 95 caracteres agrega 6,6 bits de entropía. Duplicar el conjunto de caracteres de 26 a 95 solo agrega aproximadamente 1,9 bits por carácter.
Las directrices NIST (actualizadas en 2024) merecen conocerse porque contradicen la sabiduria convencional heredada sobre politicas de contraseñas:
Para contraseñas generadas por maquina almacenadas en un gestor, ninguna de estas restricciones de politica importa. Usa entropía completa y máxima longitud.
Una contraseña aleatoria de 20 caracteres y una passphrase son herramientas diferentes para situaciones diferentes.
Una passphrase Diceware de 4 palabras (elegidas al azar de 7776 palabras):
correct horse battery staple
Entropía: log2(7776^4) ~ 51,7 bits/palabra x 4 = aproximadamente 207 bits. Mas entropía que una contraseña aleatoria de 20 caracteres.
Una passphrase Diceware de 6 palabras tiene aproximadamente 310 bits. Es irrompible. Y se puede escribir y memorizar, lo que la convierte en la elección correcta para:
Usa contraseñas de caracteres aleatorios para todo lo almacenado en tu gestor. Usa passphrases para el punado de credenciales que necesitas recordar o escribir regularmente.
La diferencia de implementación no es sutil:
// INCORRECTO: Math.random() no es criptograficamente seguro
function insecurePassword(length) {
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
return Array.from({ length }, () => chars[Math.floor(Math.random() * chars.length)]).join("");
}
// CORRECTO: crypto.getRandomValues() es un CSPRNG
function securePassword(length) {
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";
const array = new Uint32Array(length);
crypto.getRandomValues(array);
return Array.from(array, (n) => chars[n % chars.length]).join("");
}
La operación % chars.length agrega un pequeno sesgo de modulo cuando el tamaño del conjunto de caracteres no divide uniformemente 2^32. Para un conjunto de 95 caracteres y un valor aleatorio de 32 bits, el sesgo es insignificante en la práctica (los caracteres más comunes aparecen aproximadamente un 0,002% más frecuentemente que los menos comunes). Para una aplicación critica de seguridad, usa muestreo por rechazo para eliminar incluso este pequeno sesgo.
El generador funciona completamente en tu navegador. Ninguna contraseña se envía a ningun servidor. La fuente de aleatoriedad es el método crypto.getRandomValues() de Web Crypto API, que todos los navegadores modernos exponen y que obtiene valores del CSPRNG del sistema operativo.
Despues de generar, copia la contraseña directamente a tu gestor de contraseñas. Evita pegarla en ubicaciones intermedias donde el valor podría guardarse o sincronizarse (borradores de correo electronico, aplicaciones de notas, ventanas de chat).
Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.