Contáctanos
Webflow Premium Partner Ehab Fayez
Volver a Agent Skills
Seguridad y Calidad

bcrypt Password Hashing

Hashea y verifica contraseñas de forma segura usando bcrypt con rondas de sal configurables en Node.js.

Claude Code Cursor Copilot Windsurf Gemini CLI Codex

Descripción General

bcrypt es una función de hashing de contraseñas diseñada por Niels Provos y David Mazieres, basada en el cifrado Blowfish. La biblioteca node.bcrypt.js proporciona enlaces nativos C++ para bcrypt en Node.js, ofreciendo hashing de contraseñas de alto rendimiento con generación automática de sal y factores de trabajo configurables.

El parámetro de factor de trabajo (rondas de sal) controla el costo computacional del hashing. Cada incremento duplica el tiempo requerido, permitiendo escalar la seguridad conforme mejora el hardware. Un factor de trabajo de 10-12 se recomienda comúnmente para uso en producción, equilibrando seguridad con tiempo de respuesta. La biblioteca maneja la generación de sal automáticamente, incrustando la sal en la salida del hash.

bcrypt está diseñado específicamente para hashing de contraseñas, a diferencia de funciones hash de propósito general como SHA-256. Su lentitud intencional y sal integrada lo hacen resistente a ataques de tablas arcoíris, fuerza bruta y cracking acelerado por GPU. La biblioteca proporciona APIs tanto síncronas como asíncronas, recomendándose la versión asíncrona para aplicaciones de servidor para evitar bloquear el event loop.

¿Para Quién Es?

  • Hashear contraseñas de usuarios antes de almacenar en base de datos
  • Verificar contraseñas durante autenticación de inicio de sesión
  • Migrar de hashing MD5/SHA a bcrypt
  • Implementar cambio de contraseña con verificación de contraseña anterior

Instalación

Configurar Claude Code
npm install bcrypt && npm install -D @types/bcrypt

Configuración

import bcrypt from "bcrypt"

const SALT_ROUNDS = 12

// Hash a password
const hash = await bcrypt.hash(plainPassword, SALT_ROUNDS)

// Verify a password
const isMatch = await bcrypt.compare(plainPassword, hash)