Bcrypt Generator

Generador Bcrypt

Generador de hash bcrypt gratuito — 100% lado cliente. Benchmark del factor de coste en tiempo real, parser del hash y snippets para Node.js, Python, PHP, Go.

Actualizado junio de 2026

Revisado por Rafael Duarte

Sin actividad de red — 100% en el navegador
SEGURO EN CLIENTE
12
4 — pruebas El valor por defecto es 12 (OWASP). Mayor = más seguro pero más lento. 18 — muy lento

Benchmark local

Tiempo de procesamiento en tu hardware actual

Cost 8
—
Cost 10
—
Cost 12
—
Cost 14
—

Fragmentos de implementación

const bcrypt = require('bcryptjs');
const SALT_ROUNDS = 12; // OWASP recommended

async function hashPassword(plaintext) {
  return await bcrypt.hash(plaintext, SALT_ROUNDS);
}

async function verifyPassword(plaintext, hash) {
  return await bcrypt.compare(plaintext, hash);
}

const hash = await hashPassword('user_password');
// '$2b$12$...' (60 chars, always different due to random salt)

const isValid = await verifyPassword('user_password', hash);
// true

Cómo funciona

Generar el hash toma menos de cinco segundos

1. Pega la contraseña

La insignia "CLIENT-SIDE SECURE" confirma que no se hace ninguna petición de red al escribir.

2. Ajusta el factor de coste

Deslizador de 4 a 18 — el coste 12 es el valor por defecto recomendado por OWASP.

3. Genera y copia

El hash aparece junto al tiempo exacto que tardó en tu hardware; cópialo con un clic.

Qué hace esta herramienta

Más allá de generar el hash

Verifica un hash existente

La pestaña Verify compara una contraseña contra un hash bcrypt y muestra un check verde o una X roja en milisegundos.

Benchmark del factor de coste

Mide el tiempo real de hashing en tu propio hardware para cada valor de coste, de 8 a 14.

Decodifica un hash bcrypt

Pega cualquier hash para ver por separado su versión, coste, salt y checksum.

Snippets de código listos

Genera el equivalente en Node.js, Python, PHP, Go, Java, Ruby, C# y Rust.

100% del lado del cliente con bcryptjs

Ninguna contraseña sale del navegador — confírmalo en la pestaña Network de las DevTools.

Script de benchmark para tu servidor

Copia un script listo (Node.js, Python, PHP, Ruby o Go) que prueba los costes 10 a 16 en tu propia máquina de producción, no una estimación del navegador.

Ejemplos

Entrada
Hash bcrypt (coste 12)
micontraseñasecreta
$2b$12$nOUIs5kJ7naTuTFkBy1veuK0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa
micontraseñasecreta (generado de nuevo)
$2b$12$aBcDeFgHiJkLmNoPqRsTuv... — salt distinto, ambos hashes son válidos
72 vs. 100 caracteres 'a'
producen hashes equivalentes — los bytes después del 72 se ignoran
contraseña incorrecta vs. el hash de arriba (pestaña Verify)
false — X roja, sin revelar en qué carácter difieren

Cuándo vas a necesitar esto

Los escenarios más comunes entre quienes usan la herramienta

Autenticación de usuarios

Hashea la contraseña antes de guardarla; bcrypt.compare() confirma la coincidencia en tiempo constante durante el login.

Migrar desde un algoritmo débil

Re-hashea progresivamente las contraseñas de MD5 o SHA-1 a bcrypt cada vez que alguien inicia sesión con éxito.

Calibrar el factor de coste

Corre el benchmark en el hardware de producción para encontrar el coste más alto que aún respete tu límite de UX.

Auditoría de seguridad

Pega un hash existente para verificar su versión, coste y la longitud del salt y del checksum.

Antes de usarlo en producción, revisa esto

Coste 4–8 en producción

Se calculan en menos de 1ms — sin resistencia real a fuerza bruta. Usa 10 como mínimo y 12 como valor por defecto.

Hashear un hash que ya está hasheado

Produce una cadena que nunca se podrá verificar de vuelta. Hashea siempre el texto plano original, nunca un hash previo.

Límite de 72 bytes

Bcrypt trunca la entrada en silencio — las contraseñas más largas necesitan un pre-hash con SHA-256 o pasar a Argon2id.

Guardar el salt por separado

Es innecesario — bcrypt ya incluye el salt dentro de los 60 caracteres del hash.

Contraseñas con tildes o emojis cerca del límite

Bcrypt cuenta bytes, no caracteres — un emoji puede ocupar 4 bytes. Una contraseña de 60 caracteres acentuados puede superar los 72 bytes antes de lo esperado y truncarse en silencio.

Comparar hashes con === en vez de compare()

Comparar cadenas directamente filtra un timing attack, porque se detiene en el primer byte distinto. Usa siempre bcrypt.compare(), password_verify() o su equivalente, que corren en tiempo constante.

Por qué generar el hash aquí

Todo el hashing corre en el navegador con bcryptjs, una implementación pura en JavaScript — abre las DevTools y confirma que la pestaña Network queda vacía.

El benchmark mide el tiempo real en tu propio hardware, no una estimación genérica, y los snippets para ocho lenguajes te ahorran el paso de escribir la llamada a la librería a mano.

A diferencia de una calculadora de hash genérica, esta herramienta descompone el hash generado (versión, coste, salt, checksum) y además genera el script de benchmark para correr en tu propio servidor de producción, el hardware que de verdad va a autenticar a tus usuarios.

Bcrypt vs. Argon2id

Ambos resuelven el hashing de contraseñas; la elección depende del proyecto

Bcrypt
Argon2id
Recomendación actual de OWASP
alternativa sólida
primera opción
Resistente a GPU/ASIC (memory-hard)
no
sí
Límite de longitud de contraseña
72 bytes
sin límite
Soporte amplio en lenguajes
sí
creciente
Factor de coste ajustable
sí
sí (memoria + tiempo)

Preguntas frecuentes

OWASP recomienda el coste 12 como punto de partida, apuntando a ~250ms por hash en hardware moderno. Usa el benchmark de esta página para medir tu propio servidor y elegir el coste más alto que se mantenga bajo tu límite de UX (300ms–1s).

Referencias

Artículo relacionado

Salt, pepper, bcrypt e Argon2id: como proteger senhas de verdade

Herramientas relacionadas