freeCodeCamp/curriculum/challenges/spanish/06-information-security-and.../information-security-with-h.../hash-and-compare-passwords-...

3.2 KiB

id title challengeType videoUrl localeTitle
58a25bcff9fc0f352b528e7d Hash and Compare Passwords Asynchronously 2 Hash y comparar contraseñas de forma asíncrona

Description

Como recordatorio, este proyecto se está construyendo sobre el siguiente proyecto de inicio en Glitch , o clonado desde GitHub . Como el hash está diseñado para ser computacionalmente intensivo, se recomienda hacerlo de forma asíncrona en su servidor para evitar el bloqueo de las conexiones entrantes mientras realiza el hash. Todo lo que tiene que hacer para bcrypt.hash(myPlaintextPassword, saltRounds, (err, hash) => { /*Store hash in your db*/ }); una contraseña asincrónica es llamar a bcrypt.hash(myPlaintextPassword, saltRounds, (err, hash) => { /*Store hash in your db*/ });
Agregue esta función de hash a su servidor (ya definimos las variables utilizadas en la función que debe utilizar) y regístrela en la consola para que la pueda ver. En este punto, normalmente guardaría el hash en su base de datos. Ahora, cuando necesite averiguar si una nueva entrada es la misma que la del hash, simplemente usaría la función de comparación bcrypt.compare(myPlaintextPassword, hash, (err, res) => { /*res == true or false*/ }); . Agregue esto a su función hash existente (ya que debe esperar a que el hash se complete antes de llamar a la función de comparación) después de registrar el hash completado y el registro 'res' en la consola dentro de la comparación. ¡Debería ver en la consola un hash y luego se imprime 'verdadero'! Si cambia 'myPlaintextPassword' en la función de comparación por 'someOtherPlaintextPassword' entonces debería decir falso.
 bcrypt.hash ('passw0rd!', 13, (err, hash) => {
  console.log (hash); //$2a$12$Y.PHPE15wR25qrrtgGkiYe2sXo98cjuMCG1YwSI5rJW1DSJp0gEYS
  bcrypt.compare ('passw0rd!', hash, (err, res) => {
      console.log (res); //cierto
  });
}); 
Envía tu página cuando creas que lo has hecho bien.

Instructions

Tests

tests:
  - text: Async hash generado y correctamente comparado.
    testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /START_ASYNC[^]*bcrypt.hash.*myPlaintextPassword( |),( |)saltRounds( |),( |).*err( |),( |)hash[^]*END_ASYNC/gi, "You should call bcrypt.hash on myPlaintextPassword and saltRounds and handle err and hash as a result in the callback"); assert.match(data, /START_ASYNC[^]*bcrypt.hash[^]*bcrypt.compare.*myPlaintextPassword( |),( |)hash( |),( |).*err( |),( |)res[^]*}[^]*}[^]*END_ASYNC/gi, "Nested within the hash function should be the compare function comparing myPlaintextPassword to hash"); }, xhr => { throw new Error(xhr.statusText); })'

Challenge Seed

Solution

// solution required