Desarrollador 🔒 Se ejecuta en tu navegador — no se envían datos

Generador y verificador de hashes bcrypt

Cree un hash bcrypt para una contraseña, o compruebe si una contraseña coincide con un hash guardado, sin que nada salga de su navegador.

Texto de entrada

Generar y verificar hashes bcrypt online

bcrypt es un algoritmo de hash de contraseñas diseñado para ser lento a propósito. Un hash de uso general como SHA-256 se puede calcular miles de millones de veces por segundo, que es justo lo que quiere quien intenta adivinar contraseñas de una base de datos filtrada; bcrypt encarece cada intento, y su factor de coste permite que ese precio crezca a medida que el hardware se vuelve más rápido. Es el método por defecto en PHP, Laravel, Ruby on Rails, Spring Security y muchos otros frameworks.

Esta página abre la pestaña bcrypt del generador de hash. Tareas típicas: crear la primera cuenta de administrador directamente en una base de datos, escribir un fixture de pruebas o averiguar por qué un usuario no puede iniciar sesión.

Cómo leer un hash bcrypt

Un hash bcrypt mide siempre 60 caracteres y contiene todo lo necesario para comprobarlo más tarde. Tome $2y$10$N9qo8uLOickgx2ZMRZoMye...:

ParteSignificado
$2y$Prefijo de versión
10Coste: 2 elevado a 10, es decir, 1.024 rondas de preparación de la clave
Los 22 caracteres siguientesLa sal aleatoria
Los últimos 31 caracteresEl hash propiamente dicho

Elegir el coste

Aquí el coste se puede fijar entre 4 y 14. Cada punto duplica el trabajo, así que un coste de 12 es cuatro veces más lento que uno de 10. Apunte a un tiempo de hash de una fracción de segundo en su propio servidor; la herramienta muestra su progreso mientras trabaja, lo que le da una idea de la diferencia. Como el coste se guarda dentro del hash, puede subirlo más adelante y volver a calcular el hash de cada contraseña la próxima vez que su dueño inicie sesión.

El límite de 72 bytes

bcrypt solo lee los primeros 72 bytes de una contraseña. Una entrada más larga no se rechaza, se corta sin avisar, así que dos contraseñas largas que compartan sus primeros 72 bytes producen el mismo hash. Los caracteres que no son del inglés, como las vocales con tilde o la ñ, suelen ocupar de dos a cuatro bytes cada uno en UTF-8, así que el límite llega antes de lo que sugiere el número de caracteres. La herramienta cuenta los bytes mientras escribe y le avisa en cuanto supera los 72.

Comprobar un hash en código

LenguajeCrearVerificar
PHPpassword_hash($pw, PASSWORD_BCRYPT)password_verify($pw, $hash)
Node.js (bcryptjs)bcrypt.hash(pw, 10)bcrypt.compare(pw, hash)
Python (bcrypt)bcrypt.hashpw(pw, bcrypt.gensalt())bcrypt.checkpw(pw, hashed)

Para obtener contraseñas aleatorias que convertir en hash, use el generador de contraseñas. Para sumas de verificación de archivos en lugar de contraseñas, quédese con SHA-256.

Guías relacionadas