Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

231
Visualizações
NodeJS + Bcrypt compara el hash que devuelve verdadero con una cadena de comparación incorrecta

Actualmente estoy tratando de implementar un servicio de restablecimiento de contraseña con NodeJS usando Bcrypt. He creado un hash de un objeto como este:

 const userData = { dateNow, userId: foundUser.rows[0].user_id, passwordHash: foundUser.rows[0].user_password, email: foundUser.rows[0].user_email }; const userDataHash = await hashUserData(userData, 10);

Donde userDataHash es:

 const hashUserData = async (userData, saltRounds) => { let hashedData = await bcrypt.hash(JSON.stringify(userData), saltRounds); if (hashedData.includes('/') || hashedData.includes('.')) { hashedData = hashUserData(userData, saltRounds); } console.log('hashUserData', hashedData) return hashedData; };

La función hash es un poco complicada porque forma parte de la URL de restablecimiento. No quiero ningún hash con / o .

Luego, el hash del objeto de datos de usuario se agrega a una URL. Cuando el usuario hace clic en el enlace y se le lleva al restablecimiento de contraseña, cuando envía el formulario, el hash de la URL se envía junto con la ID de usuario de la cuenta para restablecer, esta ID se usa para crear un objeto de los mismos datos. utilizado originalmente para crear el hash, de modo que si el hash de la contraseña ya se ha cambiado, el hash no coincidirá, lo que impedirá que la persona actualice su contraseña.

Mi problema es que incluso cuando cambia el hash de la contraseña, la comparación de hash devuelve verdadero. Si cambio algo más en el objeto, la comparación hash devuelve falso.

 const compareHash = async (toCompare, currentHash) => { return await bcrypt.compare(toCompare, currentHash) };
 const userDataToCheck = { dateNow: req.params.dateNow, userId, passwordHash: foundUser.rows[0].user_password, email: foundUser.rows[0].user_email };
 const hashesMatch = await compareHash(JSON.stringify(userDataToCheck), req.params.userDataHash)

Donde req.params.userDataHash es el hash original que utiliza el hash de contraseña original en el objeto.

¡Cualquier ayuda apreciada!

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda