Herramienta de Generación y Validación de Contraseñas

Herramienta profesional de generación y validación de contraseñas que crea contraseñas seguras y frases de contraseña memorables, con soporte para generación por lotes, garantía de unicidad, evaluación de fortaleza y validación de políticas. Cuenta con fuente aleatoria criptográficamente segura, conjuntos de caracteres configurables, filtrado de caracteres similares, estadísticas de deduplicación por lotes y funcionalidad de copia con un clic. Incluye ejemplos de código en varios idiomas, base de conocimientos de contraseñas, mejores prácticas de seguridad y herramientas de prueba de políticas. Todas las operaciones se realizan localmente en tu navegador, garantizando privacidad y seguridad.

Generador de Contraseñas

Seleccionar grupos de símbolos
Consejo: Excluye caracteres seleccionando grupos o haciendo clic directamente en caracteres individuales.
Resultado

Probador de Política de Contraseñas

Resultados
  • Longitud
  • Minúsculas
  • Mayúsculas
  • Dígitos
  • Símbolos
  • Secuencial
  • Repeticiones
  • Lista bloqueada
Todas las comprobaciones se realizan localmente en tu navegador.

Generador de Frases de Contraseña

Las palabras se seleccionan uniformemente con aleatoriedad criptográficamente segura (Web Crypto) de una lista de 1271 palabras sin ambigüedades; 6 palabras brindan aproximadamente 62 bits de entropía — usa 8 palabras para mayor fortaleza.

Hoja de referencia rápida de hashing de contraseñas

Argon2id
  • Usa Argon2id con parámetros razonables que requieran mucha memoria
  • Tiempo ≥ 2 pasadas, memoria ≥ 64MB (ajusta según el entorno)
  • Guarda una sal única por usuario; opcionalmente usa una pepper en la capa de aplicación
PBKDF2
  • Elige SHA-256 o SHA-512 con iteraciones ≥ 210k (ajusta según sea necesario)
  • Usa una sal única para cada hash; admite actualizaciones de parámetros
  • Realiza la migración a parámetros de mayor costo durante el próximo inicio de sesión del usuario
BCrypt
  • Establece el costo entre 10 y 14, dependiendo de las capacidades del servidor
  • Evita problemas de truncamiento; hashea la contraseña completa
  • Implementa limitación de tasa y monitoreo en los endpoints de autenticación
Referencia: NIST SP 800-63B, OWASP ASVS. Los parámetros deben alinearse con las capacidades del hardware y los SLO.

Evaluador de Fortaleza de Contraseñas

La fortaleza se aproxima mediante la entropía: entropía = log2(tamaño del grupo de caracteres) × longitud. Un grupo de caracteres más grande y una longitud mayor mejoran la resistencia al adivinamiento.

  • Débil: < 50 bits —— Solo adecuado para escenarios de un solo uso o de bajo valor
  • Aceptable: 50–80 bits —— Aceptable para escenarios de bajo riesgo
  • Fuerte: 80–110 bits —— Objetivo predeterminado recomendado
  • Excelente: > 110 bits —— Recomendado para administradores o cuentas críticas

Nota: Los modelos de ataque del mundo real pueden variar; evita reutilizar contraseñas y activa la autenticación multifactor (MFA).

Cómo Usar

  • Selecciona la longitud y el conjunto de caracteres (Minúsc/Mayúsc/Números/Símbolos); activa opcionalmente "Evitar Caracteres Similares" y "Requerir Cada Tipo"
  • Para un control más preciso: excluye caracteres específicos o grupos de caracteres, o elige subconjuntos de símbolos
  • Elige cuántas contraseñas quieres generar, luego haz clic en Generar; los resultados por lotes se eliminan automáticamente los duplicados y puedes copiarlos todos a la vez
  • Para validar contraseñas existentes, usa el Probador de Políticas; para frases de contraseña memorables, usa el Generador de Frases de Contraseña

Características

  • Fuente aleatoria criptográficamente segura (Web Crypto)
  • Conjuntos de caracteres y grupos de símbolos configurables
  • Filtrado de caracteres similares y exclusiones personalizadas
  • Generación masiva de 1 a 100 contraseñas, siempre únicas
  • Métricas de fortaleza y entropía
  • Probador de Políticas y Generador de Frases de Contraseña
  • Ejemplos de código en varios idiomas
  • Copia con un clic (individual o todas)

Ejemplos de Generación de Contraseñas

Segura
Longitud 24, incluye mayúsculas, minúsculas, dígitos y símbolos
Memorable
Longitud 16, incluye mayúsculas, minúsculas y dígitos; evita caracteres similares

Base de Conocimientos de Contraseñas

1) Fortaleza y Entropía de la Contraseña
  • Entropía ≈ log2(tamaño del conjunto de caracteres) × longitud; la longitud suele contribuir más
  • Objetivos recomendados: Cuentas generales ≥ 80 bits; Cuentas de alto privilegio/financieras ≥ 110 bits
  • Conjunto de caracteres más amplio + longitud mayor → mayor resistencia a adivinanzas
2) Longitud vs. Complejidad
  • Agregar símbolos a ciegas es menos efectivo que aumentar la longitud
  • Evita patrones predecibles (ej: siempre 'Mayúscula inicial + número al final!)
  • Prioriza una longitud suficiente, luego aumenta moderadamente la diversidad de caracteres
3) Errores Comunes y Anti-patrones
  • Secuencias de teclado (ej: qwerty), bloques repetidos, cumpleaños/años son fácilmente atacados mediante reglas
  • Usar 'contraseña raíz + sufijo del sitio' genera reutilización de variantes, concentra el riesgo y hace las contraseñas más fáciles de adivinar
  • Nunca reutilices la misma contraseña en múltiples sitios web
4) Recomendaciones de Gestión de Contraseñas
  • Usa un gestor de contraseñas; asegura contraseñas únicas por sitio; activa MFA para cuentas críticas
  • Evita transmitir contraseñas en texto plano por canales públicos; usa frases de contraseña 'pronunciables' cuando sea necesario
  • Cambia y haz únicas las contraseñas inmediatamente si se detecta una fuga o reutilización
5) Pautas para Frases de Contraseña
  • Combinaciones de 4 a 6 palabras aleatorias suelen ser seguras y memorables
  • Mezcla separadores, usa mayúsculas iniciales e inserta números para mejorar la seguridad y legibilidad
  • Evita concatenar frases comunes, letras de canciones o citas famosas directamente

Mejores Prácticas de Seguridad de Contraseñas

Mejores prácticas
  • Usa una longitud suficiente: 16+ caracteres para cuentas generales, 24+ para las críticas
  • Para facilitar su memorización, prioriza las frases de contraseña; usa un gestor de contraseñas para almacenar contraseñas aleatorias de alta seguridad
  • Habilita la autenticación multifactor (MFA) siempre que sea posible
  • Nunca reutilices contraseñas entre sitios: cada cuenta debe tener una contraseña única
Entropía y seguridad

La entropía mide la imprevisibilidad en función de la longitud y el tamaño del conjunto de caracteres. Cuantos más bits de entropía, mayor será la seguridad típicamente de la contraseña.

  • Prioriza aumentar la longitud para obtener el máximo aumento de seguridad
  • Utiliza múltiples conjuntos de caracteres cuando sea factible
  • Excluir demasiados caracteres reduce el grupo de caracteres y debilita la seguridad
Políticas y rotación
  • Preferir requisitos de longitud y listas negras de contraseñas comunes/vazadas sobre reglas de composición complejas
  • Evita rotaciones obligatorias frecuentes; cambia la contraseña solo cuando se detecte una brecha o riesgo
  • Utiliza listas de contraseñas comprometidas para bloquear contraseñas comunes o vazadas
Frases de contraseña
  • Usa 4 a 6 palabras aleatorias unidas por separadores, por ejemplo: lago-ZANAHORIA-planeta_7
  • Evita citas famosas, letras de canciones u otras frases comunes; la aleatoriedad importa más que la 'ingeniosidad'
  • Para cuentas críticas, usa un gestor de contraseñas para almacenar contraseñas aleatorias realmente de alta entropía
Consejos de configuración de generación
  • "Requerir cada conjunto seleccionado" asegura que aparezca al menos un carácter de cada categoría elegida
  • "Evitar caracteres similares" mejora la legibilidad pero reduce ligeramente el tamaño del grupo de caracteres
  • Los símbolos pueden limitarse a un subconjunto compatible con el sistema objetivo
Almacenamiento en servidor
  • Nunca almacenes contraseñas en texto plano; utiliza hashing seguro (Argon2id/PBKDF2/Bcrypt) con salt
  • Configura los parámetros (memoria/tiempo/coste) de forma adecuada; considera usar un pepper cuando sea necesario
  • Limita los intentos de inicio de sesión y monitorea los fallos; aplica CAPTCHAs o verificación de dispositivo durante los ataques
Autenticación multifactor y recuperación
  • Preferir TOTP o claves hardware; evita el SMS siempre que sea posible
  • Flujos de recuperación seguros con autenticación multifactor o verificación por correo electrónico y aplica periodos de espera
  • Proporciona códigos de recuperación de respaldo y anima a los usuarios a almacenarlos de forma segura
Protección contra fuerza bruta
  • Implementa retrasos progresivos o bloqueos con puntuación de riesgo de IP/dispositivo
  • Aplica WAF y limitación de tasa a APIs y formularios de inicio de sesión
  • Monitorea el relleno de credenciales y anima a los usuarios a adoptar contraseñas únicas
Almacenamiento y manejo local
  • Utiliza un gestor de contraseñas de confianza para almacenamiento y autocompletado
  • No compartas nunca contraseñas en texto plano por chat o correo electrónico; usa herramientas de gestión de secretos para equipos
  • Si anotas las contraseñas offline, asegura su seguridad física
Aviso legal: Esta herramienta genera contraseñas localmente en tu navegador usando Web Crypto; no se envía ningún dato a ningún servidor.

Cómo generar contraseñas mediante lenguajes de programación

JavaScript (Web Crypto)
function randomPassword(length = 16, sets = {lower:true, upper:true, digits:true, symbols:true}) {
  const pools = {
    lower: 'abcdefghijklmnopqrstuvwxyz',
    upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
    digits: '0123456789',
    symbols: '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
  };
  let pool = '';
  for (const k of Object.keys(sets)) if (sets[k]) pool += pools[k];
  if (!pool) throw new Error('No charset');
  // Rejection sampling removes modulo bias
  const limit = Math.floor(0x100000000 / pool.length) * pool.length;
  const buf = new Uint32Array(1);
  let out = '';
  for (let i = 0; i < length; i++) {
    do { crypto.getRandomValues(buf); } while (buf[0] >= limit);
    out += pool[buf[0] % pool.length];
  }
  return out;
}
Python (secrets)
import secrets

def random_password(length=16, lower=True, upper=True, digits=True, symbols=True):
    pools = {
        'lower': 'abcdefghijklmnopqrstuvwxyz',
        'upper': 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'digits': '0123456789',
        'symbols': '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
    }
    pool = ''.join(v for k, v in pools.items() if locals()[k])
    if not pool:
        raise ValueError('No charset')
    return ''.join(secrets.choice(pool) for _ in range(length))
PHP (random_int)
function random_password($length = 16, $sets = ['lower'=>true,'upper'=>true,'digits'=>true,'symbols'=>true]) {
    $pools = [
        'lower' => 'abcdefghijklmnopqrstuvwxyz',
        'upper' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'digits' => '0123456789',
        'symbols' => '!@#$%^&*+-=_~`|/?()[]{}<>,.;:\'\"'
    ];
    $pool = '';
    foreach ($sets as $k => $on) if ($on) $pool .= $pools[$k];
    if ($pool === '') throw new Exception('No charset');
    $out = '';
    for ($i = 0; $i < $length; $i++) {
        $out .= $pool[random_int(0, strlen($pool)-1)];
    }
    return $out;
}
Go (crypto/rand)
package main

import (
  "crypto/rand"
  "math/big"
)

func RandomPassword(length int, pool string) (string, error) {
  out := make([]byte, length)
  for i := 0; i < length; i++ {
    nBig, err := rand.Int(rand.Reader, big.NewInt(int64(len(pool))))
    if err != nil { return "", err }
    out[i] = pool[nBig.Int64()]
  }
  return string(out), nil
}
Java (SecureRandom)
import java.security.SecureRandom;

public class Pw {
  static final String POOL = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*+-=_~`|/?()[]{}<>,.;:'\"";
  static final SecureRandom SR = new SecureRandom();
  static String randomPassword(int length) {
    StringBuilder sb = new StringBuilder(length);
    for (int i = 0; i < length; i++) {
      int idx = SR.nextInt(POOL.length());
      sb.append(POOL.charAt(idx));
    }
    return sb.toString();
  }
}
C# (.NET RandomNumberGenerator)
using System;
using System.Security.Cryptography;

public static class Pw {
  public static string RandomPassword(int length, string pool) {
    // GetInt32 draws an unbiased value in [0, pool.Length)
    var chars = new char[length];
    for (int i = 0; i < length; i++) {
      chars[i] = pool[RandomNumberGenerator.GetInt32(pool.Length)];
    }
    return new string(chars);
  }
}
Rust (rand + getrandom)
use rand::rngs::OsRng;
use rand::Rng;

fn random_password(length: usize, pool: &str) -> String {
    // gen_range is uniform, so there is no modulo bias
    let chars: Vec = pool.chars().collect();
    (0..length)
        .map(|_| chars[OsRng.gen_range(0..chars.len())])
        .collect()
}

fn main() {
    let pool = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*+-=_~`|/?()[]{}<>,.;:'\"";
    let pw = random_password(16, pool);
    println!("{}", pw);
}