Generador de Hash Bcrypt - Generar y Verificar Hashes Bcrypt en Línea
Genera hashes de contraseñas bcrypt con factor de costo configurable y verifica texto plano contra hashes bcrypt existentes. 100% del lado del cliente, tus contraseñas nunca salen de tu navegador.
Recomendado para uso en producción
Preguntas Frecuentes
¿Qué es bcrypt y por qué se usa para el hash de contraseñas?
Bcrypt es una función de hash de contraseñas diseñada por Niels Provos y David Mazieres en 1999, basada en el cifrado Blowfish. A diferencia de las funciones hash de propósito general como SHA-256, bcrypt está diseñado específicamente para el almacenamiento de contraseñas. Incluye un salt integrado para prevenir ataques de tabla arcoíris y un factor de costo adaptable que puede aumentarse con el tiempo para mantenerse al día con el poder computacional creciente.
¿Cómo uso este generador de hash bcrypt?
1. Cambie a la pestaña Generar. 2. Ingrese su contraseña o texto en el campo de entrada. 3. Ajuste el control deslizante del Factor de Costo (Rondas) — el valor predeterminado es 10, se recomienda 12+ para producción. 4. Haga clic en Generar Hash y espere a que se complete el cálculo. 5. Copie el hash bcrypt de 60 caracteres generado usando el botón Copiar. 6. Para verificar una contraseña, cambie a la pestaña Verificar, pegue el hash bcrypt e ingrese el texto plano a probar.
¿Mi contraseña está segura? ¿Se envía a un servidor?
Su contraseña está 100% segura y nunca sale de su navegador. Esta herramienta utiliza la biblioteca JavaScript bcryptjs para realizar todas las operaciones bcrypt completamente en su dispositivo. Ningún dato de contraseña, texto plano o hash generado se transmite a ningún servidor, se almacena en ninguna base de datos ni se registra en ningún lugar.
¿Qué factor de costo (rondas) debo usar?
El factor de costo determina cuántas iteraciones realiza bcrypt (2^rondas). Valores más altos son más seguros pero más lentos. Recomendaciones: 4-7 solo para pruebas y desarrollo. 8-9 para aplicaciones de baja seguridad. 10 es el valor predeterminado. 12 es el mínimo recomendado para producción. 14+ para aplicaciones de alta seguridad.
¿Por qué la misma contraseña produce hashes bcrypt diferentes cada vez?
Bcrypt genera automáticamente un salt aleatorio único de 128 bits para cada operación de hash. Este salt se incorpora al hash y se almacena como parte de la cadena de salida. Cuando hashea la misma contraseña dos veces, se usan salts diferentes, produciendo resultados diferentes. Esto es por diseño — previene ataques de tabla arcoíris.
¿Cuál es la diferencia entre bcrypt y SHA-256 para el hash de contraseñas?
SHA-256 es una función hash criptográfica de propósito general diseñada para ser rápida, mientras que bcrypt está diseñado específicamente para el hash de contraseñas y es intencionalmente lento. SHA-256 puede calcular miles de millones de hashes por segundo en GPUs modernas, haciendo factibles los ataques de fuerza bruta. El factor de costo ajustable de bcrypt limita a los atacantes a unos pocos miles de hashes por segundo.
¿Puedo usar esta herramienta para hash de contraseñas en producción?
Esta herramienta está diseñada para pruebas, aprendizaje y desarrollo. El hash de contraseñas en producción debe realizarse del lado del servidor dentro del código de su aplicación. Nunca hashee contraseñas del lado del cliente en producción.
Ejemplos de Código
const bcrypt = require('bcryptjs');
// Generate a bcrypt hash
async function hashPassword(password, rounds = 12) {
const salt = await bcrypt.genSalt(rounds);
const hash = await bcrypt.hash(password, salt);
return hash;
}
// Verify a password against a hash
async function verifyPassword(password, hash) {
const isMatch = await bcrypt.compare(password, hash);
return isMatch;
}
// Parse bcrypt hash components
function parseBcryptHash(hash) {
const match = hash.match(/^\$(\w+)\$(\d{2})\$(.{22})(.{31})$/);
if (!match) return null;
return {
version: match[1],
rounds: parseInt(match[2], 10),
salt: match[3],
hash: match[4],
};
}
// Example usage
(async () => {
const password = 'MySecurePassword123!';
const hash = await hashPassword(password, 12);
console.log('Hash:', hash);
const isValid = await verifyPassword(password, hash);
console.log('Valid:', isValid); // true
const parsed = parseBcryptHash(hash);
console.log('Parsed:', parsed);
})();