Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Hashing de contraseñas con bcryptjs

5/20
Recursos

Aportes 7

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Esta libreria es muy util para muchas otras cosas mas, porque hay ciertas legislaciones que sancionan si se tiene información sencible de los usuarios sin estar protegida como por ejemplo, nombre completo, dirección de email, direccion postal entre otras

con esta libreria se puede implementar una rutina que al momento de guardar información sencible la encripte y luego la guarde en la base de datos y cuando deba ser consultada por usuarios esta infirmación sea desencriptada para luego ser mostrada. Asi la infirmación guardada si llega a ser comprometida no podrá ser desencriptada a menos que se dispongan de las claves de encriptación y desencriptación

Por lo que estube investigando, el salt, no hace referencia a “saltos”, sino a una cadena de caracteres que se agrega a la password original y que es desconocida por el usuario, a fin incrementar la seguridad del proceso de hash. Esto es, evitar ataques de rainbow-tables o hashes pre-computados.

Al usar:

bcrypt.hash(myPassword, 10);

estamos pidiendole a bcrypt que nos auto-genere un salt por nosotros.

fuentes:

En el minuto 5:30 podemos ver que la salida de BCrypt es distinta aún para el mismo password. Esta es la función de salt (también conocida como sal). Esta sal permite, por ejemplo, que si 2 o mas usuarios tuvieran el mismo password en la base de datos veríamos cadenas de texto distintas para cada uno de ellos

Entre mayor sea el numero de saltos mayor sera la dificultad de la encriptacion por tanto sera +SEGURA pero sera +LENTO conseguirla y el async tardara mas en responder

El hashing de contraseñas encripta (hashea) el password para poder guardarlo en la base de datos ya que por motivos de seguridad no es recomendado guardar el password en crudo.

Instalar bcrypt: npm i bcrypt

Para hashear una contraseña usando bcrypt se hace el uso de la función .hash(), esta función recibe como primer parámetro la contraseña y después el número de salt. Esta función devuelve una promesa que se puede manejar con async/await, por ejemplo:

const bcrypt = require('bcrypt');

async function hashPassword() {
  const myPassword = 'admin1.2.3'
  const hash = await bcrypt.hash(myPassword, 10);
  console.log(hash);
}

hashPassword(); // $2b$10$GiP.RKuC7tdx8pIoWMRkZuyCwbQYs8aBhJLaqwwqa6bJ1LET.Msom

Para verificar la contraseña se necesita el password en crudo y el hash generado, con ello se hace el uso de la función .compare() que recibe como primer parámetro la contraseña en crudo y después el hash. Esta función devuelve un booleano, por ejemplo:

const bcrypt = require('bcrypt');

async function verifyPassword() {
  const myPassword = 'admin1.2.3';
  const hash = '$2b$10$6.K1g7Nu7YrVUbLE1FhSJORhkeOg0.X3LVamYf7aZKssfNAWbOgya';
  const isMatch = await bcrypt.compare(myPassword, hash);
  console.log(isMatch);
}

verifyPassword(); // True

Interesantísima esta clase!

Para correr el código de forma directa instalen la extensión code Runner