100% CLIENT-SIDE SIN BACKEND WEB CRYPTO API

API simplificada para generar contraseñas seguras

SafeKey Generator no usa una API REST para crear contraseñas. Toda la lógica corre en el navegador del usuario para mayor privacidad. Esta guía resume el flujo en pocos pasos.

Entrada

Longitud y tipos de caracteres (A-Z, a-z, 0-9, simbolos).

Motor

window.crypto.getRandomValues() para entropia criptografica real.

Salida

Password fuerte generada localmente, sin enviar datos al servidor.

Implementacion minima (3 pasos)

  1. Construir el set de caracteres permitido.
  2. Tomar bytes aleatorios seguros con Web Crypto.
  3. Mapear cada byte a un caracter y mezclar el resultado.
function generatePassword(length = 16, options = {}) {
  const sets = {
    lower: "abcdefghijklmnopqrstuvwxyz",
    upper: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
    numbers: "0123456789",
    symbols: "!@#$%^&*()-_=+[]{};:,.?/"
  };

  const use = {
    lower: options.lower !== false,
    upper: options.upper !== false,
    numbers: options.numbers !== false,
    symbols: "!@#$%^&*()-_=+[]{};:,.?/"
  };

  let charset = "";
  for (const key of Object.keys(use)) {
    if (use[key]) charset += sets[key];
  }
  if (!charset) throw new Error("Selecciona al menos un tipo de caracter");

  const bytes = new Uint32Array(length);
  window.crypto.getRandomValues(bytes);

  let out = "";
  for (let i = 0; i < length; i += 1) {
    out += charset[bytes[i] % charset.length];
  }
  return out;
}

Buenas practicas recomendadas

  • Usar 16+ caracteres para cuentas criticas.
  • Combinar mayusculas, minusculas, numeros y simbolos.
  • No reutilizar passwords en diferentes servicios.
  • Guardar passwords en un gestor de contraseñas.

FAQ rapida

La API guarda las contraseñas?

No. La generacion ocurre localmente en el navegador.

Hay endpoint publico para integrar desde backend?

No actualmente. El modelo de seguridad prioriza ejecucion client-side.

Math.random() sirve para seguridad?

No. Para seguridad se debe usar window.crypto.getRandomValues().