Cómo utilizar la biblioteca bcrypt de JavaScript

Descubra cómo codificar y verificar contraseñas en JavaScript con la biblioteca bcrypt
El paquete npm bcrypt es uno de los paquetes más utilizados para trabajar con contraseñas en JavaScript.
Esto es un principio básico de seguridad, pero vale la pena mencionarlo para los nuevos desarrolladores: nunca guardes una contraseña en texto sin formato en la base de datos ni en ningún otro lugar. Simplemente no lo hagas.
Lo que haces en cambio es generar un hash a partir de la contraseña y almacenarlo.
De este modo:
import bcrypt from 'bcrypt'// or// const bcrypt = require('bcrypt')const password = 'oe3im3io2r3o2'const rounds = 10bcrypt.hash(password, rounds, (err, hash) = { if (err) { console.error(err) return } console.log(hash)}) Se pasa un número como segundo argumento y, cuanto mayor sea, más seguro será el hash, pero también más tiempo llevará generarlo.
El README de la biblioteca nos dice que en un núcleo de 2GHz podemos generar:
rounds=8 : ~40 hashes/secrounds=9 : ~20 hashes/secrounds=10: ~10 hashes/secrounds=11: ~5 hashes/secrounds=12: 2-3 hashes/secrounds=13: ~1 sec/hashrounds=14: ~1.5 sec/hashrounds=15: ~3 sec/hashrounds=25: ~1 hour/hashrounds=31: 2-3 days/hash Si lo ejecuta bcrypt.hash()varias veces, el resultado seguirá cambiando. Esto es fundamental porque no hay forma de reconstruir la contraseña original a partir de un hash.
Dada la misma contraseña y un hash, es posible averiguar si el hash se creó a partir de esa contraseña, utilizando la bcrypt.compare()función:
bcrypt.compare(password, hash, (err, res) = { if (err) { console.error(err) return } console.log(res) //true or false}) Si es así, la contraseña coincide con el hash y, por ejemplo, podemos permitir que un usuario inicie sesión correctamente.
También puedes utilizar la bcryptbiblioteca con su API basada en promesas, en lugar de devoluciones de llamadas:
const hashPassword = async () = { const hash = await bcrypt.hash(password, rounds) console.log(hash) console.log(await bcrypt.compare(password, hash))}hashPassword() Vea un par de ejemplos en este error :
Tips para principiantes de JavaScript
Tal vez te puede interesar:
- Cómo generar un número aleatorio entre dos números en JavaScript
- Cómo esperar el evento DOM listo en JavaScript simple
- Cómo determinar si una fecha es hoy en JavaScript
- Cómo contar el número de propiedades en un objeto JavaScript
Créditos de la imagen http://dbbeebom