Saltar al contenido

Comparar dos hashes de contraseña – nodejs

Investigamos en diferentes espacios y así brindarte la solución a tu duda, si tienes dificultades puedes dejarnos tu pregunta y responderemos porque estamos para ayudarte.

Solución:

Creo que tu problema está en la sal. Por lo general, debes almacenar la sal que usaste para hacer picadillo la primera vez y reutilizarla la segunda vez. La razón de la sal es asegurarse de que el hash no se corresponda con el pase original si algún pirata informático lo recupera de un sistema comprometido (usando un ataque de tabla de arco iris). Consulte ¿Por qué usamos la “sal” para proteger nuestras contraseñas?

Si lo intentaras

var salt = crypto.randomBytes(128).toString('base64');

var hashPwd = function hashPwd(salt, pwd) 
    var hmac = crypto.createHmac('sha256', salt);
    return hmac.update(pwd).digest('hex');
;

//use password , create salt, hash and compare with the existing
var passHash = hashPwd(salt,data.Password);
console.log('the password is', user.PassHash === passHash);

Funcionaría siempre que no reinicie el servidor (suponiendo que almacene el salt var fuera del alcance de la función invocada para responder a la solicitud http).

Una mejor solución (imo) es lo que está haciendo bcrypt. Allí generas un salt por contraseña, pero para verificar que una contraseña es correcta usas compare, que usa el salt almacenado en el hash. De esta manera, puede usar diferentes sales con cada contraseña, lo que significa que no tiene que preocuparse tanto por que una sal se vea comprometida.

npm install bcrypt

var bcrypt = require('bcrypt');
var hash = bcrypt.hashSync("my password");

bcrypt.compareSync("my password", hash); // true
bcrypt.compareSync("not my password", hash); // false

También hay compareAsync y otras variantes asincrónicas. Véase también: https://www.npmjs.com/package/bcrypt-nodejs

Te invitamos a sustentar nuestra misión escribiendo un comentario o valorándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *