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 鈥渟altos鈥, 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