Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

686
Vistas
Cómo cifrar correctamente las contraseñas en nodejs

Estoy tratando de cifrar contraseñas en nodejs para un sitio web usando express.

Aquí está la función que uso para cifrar las contraseñas:

 const crypto = require('crypto'); // the problem const key = crypto.randomBytes(32); const iv = crypto.randomBytes(16); encrypt(str) { const cipher = crypto.createCipheriv('aes-256-cbc', key, iv); let encrypted = cipher.update(str, 'utf8', 'hex'); encrypted += cipher.final('hex'); console.log(encrypted); return encrypted; }

El problema con este código es que si tuviera que reiniciar esto, la clave sería diferente y obtendría diferentes cadenas para la misma contraseña que está guardada en la base de datos. Esto no funcionaría porque no podré probar la contraseña con el hash cuando un usuario envíe cuando intente iniciar sesión.

¿Cómo puedo hacer que siempre reciba la misma cadena cifrada? ¿Existe una forma más segura de hacer todo, tal vez incluso otras bibliotecas que harían mejor el trabajo?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Normalmente, con nodejs bcryptjs es un módulo más sugerido para el cifrado y descifrado de contraseñas.

Siga el enlace a continuación para tomar un ejemplo de BcryptJs

Ejemplos de conceptos de BcryptJs

over 4 years ago · Santiago Trujillo Denunciar

0

podemos usar crypto un módulo nativo de nodejs, verifique el código de muestra a continuación

 const crypto = require('crypto'); const salt = crypto.randomBytes(16).toString('hex'); const hash = crypto.pbkdf2Sync("<password>", salt, 1000, 64, `sha512`).toString(`hex`)

Más código de muestra: https://www.geeksforgeeks.org/node-js-password-hashing-crypto-module/

Nota: todas las operaciones crípticas son pesadas para la CPU, intente usar la función asíncrona siempre que sea posible.

over 4 years ago · Santiago Trujillo Denunciar

0

Use la biblioteca Crypto-Js npm.

 const CryptoJS = require("crypto-js"); const doc = await Users.create({ password: CryptoJS.AES.encrypt( req.body.password, process.env.PASS_SEC ).toString(), });

Para comparar la contraseña, use el siguiente código.

 const hashedPassword = CryptoJS.AES.decrypt( user.password, process.env.PASS_SEC ); const originalPassword = hashedPassword.toString(CryptoJS.enc.Utf8); if (user.password == originalPassword) return user;

Referencia: https://www.npmjs.com/package/crypto-js

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda