Probador de Política de Contraseñas
Prueba contraseñas contra reglas de política configurables.
Reglas de política
Acerca de esta herramienta
Un evaluador de política de contraseñas es una herramienta que valida contraseñas contra reglas de seguridad configurables para asegurar que cumplan los requisitos específicos de tu organización o aplicación. En lugar de adivinar si una contraseña es lo suficientemente segura, esta herramienta la verifica contra múltiples criterios: longitud mínima, reglas de complejidad (mayúsculas, minúsculas, números, símbolos) y listas negras de palabras prohibidas. Al comprender qué reglas una contraseña cumple o incumple, puedes fortalecer contraseñas débiles y garantizar estándares de seguridad consistentes en tus sistemas.
Usar el evaluador es simple: ingresa tu contraseña y personaliza las reglas de política que te importan. Establece requisitos de longitud mínima, alterna reglas de complejidad encendidas y apagadas, y agrega palabras o patrones prohibidos que nunca deberían aparecer en las contraseñas. La herramienta muestra instantáneamente qué reglas cumple tu contraseña y cuáles falla, proporcionándote retroalimentación visual inmediata. Esto es especialmente útil para desarrolladores que construyen sistemas de autenticación, administradores de TI que implementan políticas corporativas de contraseñas, y cualquiera que necesite validar contraseñas antes del despliegue o inscripción de usuarios.
Las políticas de contraseñas son la piedra angular de la ciberseguridad, y diferentes contextos exigen reglas diferentes: un PIN simple difiere de una contraseña empresarial, que difiere de una clave criptográfica. Este evaluador te ayuda a explorar la compensación entre la fortaleza de seguridad y la usabilidad, y comprender por qué ciertas reglas son importantes. Ya sea que estés diseñando una política de contraseñas para tu equipo, capacitando a usuarios en estándares de seguridad, o simplemente tengas curiosidad sobre la evaluación de fortaleza de contraseñas, esta herramienta desmitifica las reglas detrás de la autenticación segura.
Preguntas Frecuentes
Implementación de Código
import re
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class PasswordPolicy:
min_length: int = 8
max_length: int = 128
require_uppercase: bool = True
require_lowercase: bool = True
require_digit: bool = True
require_symbol: bool = True
min_unique_chars: int = 5
forbidden_patterns: list[str] = field(default_factory=lambda: [
r"(..)\1{2,}", # repeated two-char block 3+ times
r"(.)\1{3,}", # same char 4+ times in a row
r"(?i)password", # literal word "password"
r"(?i)qwerty",
])
symbol_chars: str = r"!@#$%^&*()-_=+[]{}|;':",./<>?"
@dataclass
class PolicyResult:
passed: bool
violations: list[str] = field(default_factory=list)
score: int = 0 # 0-100
def check_password(password: str, policy: Optional[PasswordPolicy] = None) -> PolicyResult:
if policy is None:
policy = PasswordPolicy()
violations: list[str] = []
score = 0
# Length checks
if len(password) < policy.min_length:
violations.append(f"Too short: minimum {policy.min_length} characters")
elif len(password) >= policy.min_length:
score += 25
if len(password) > policy.max_length:
violations.append(f"Too long: maximum {policy.max_length} characters")
# Character class checks
if policy.require_uppercase and not re.search(r"[A-Z]", password):
violations.append("Must contain at least one uppercase letter")
else:
score += 15
if policy.require_lowercase and not re.search(r"[a-z]", password):
violations.append("Must contain at least one lowercase letter")
else:
score += 15
if policy.require_digit and not re.search(r"\d", password):
violations.append("Must contain at least one digit")
else:
score += 15
if policy.require_symbol and not re.search(
f"[{re.escape(policy.symbol_chars)}]", password
):
violations.append("Must contain at least one symbol")
else:
score += 15
# Unique characters
if len(set(password)) < policy.min_unique_chars:
violations.append(f"Must use at least {policy.min_unique_chars} different characters")
else:
score += 15
# Forbidden patterns
for pattern in policy.forbidden_patterns:
if re.search(pattern, password):
violations.append(f"Contains forbidden pattern: {pattern}")
passed = len(violations) == 0
return PolicyResult(passed=passed, violations=violations, score=min(score, 100))
# Example usage
if __name__ == "__main__":
tests = ["abc", "Password1!", "C0rrectH0rseBatteryStaple!"]
policy = PasswordPolicy(min_length=12)
for pwd in tests:
result = check_password(pwd, policy)
print(f"{pwd!r}: passed={result.passed}, score={result.score}")
for v in result.violations:
print(f" - {v}")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.