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

3.6 KiB
Raw Blame History

id title challengeType videoUrl localeTitle
58a25bcff9fc0f352b528e7e Hash and Compare Passwords Synchronously 2 Синхронизировать и синхронизировать пароли

Description

Напомним, что этот проект строится на следующем стартовом проекте Glitch или клонируется из GitHub . Хеширование синхронно так же легко сделать, но может вызвать отставание, если использовать его на стороне сервера с высокой стоимостью или с хешированием, сделанным очень часто. Хеширование с помощью этого метода так же просто, как вызов var hash = bcrypt.hashSync(myPlaintextPassword, saltRounds);
Добавьте этот метод хэширования к вашему коду, а затем запишите результат на консоль. Опять же, используемые переменные уже определены на сервере, поэтому вам не нужно их корректировать. Вы можете заметить, что даже если вы используете тот же пароль, что и в асинхронной функции, результат в консоли отличается - это связано с тем, что соль произвольно генерируется каждый раз, как видно из первых 22 символов в третьей строке хэша , Теперь, чтобы сравнить ввод пароля с новым хэшем синхронизации, вы должны использовать метод compareSync: var result = bcrypt.compareSync(myPlaintextPassword, hash); с результатом будет логическое значение true или false. Добавьте эту функцию и войдите в консоль в результате, чтобы увидеть ее работу. Представьте свою страницу, когда вы думаете, что у вас все в порядке. Если вы столкнулись с ошибками во время этих проблем , вы посмотрите на пример завершенного код можно здесь .

Instructions

Tests

tests:
  - text: Синхронизированный хэш генерируется и правильно сравнивается
    testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /START_SYNC[^]*hash.*=.*bcrypt.hashSync.*myPlaintextPassword( |),( |)saltRounds[^]*END_SYNC/gi, "You should call bcrypt.hashSync on myPlaintextPassword with saltRounds"); assert.match(data, /START_SYNC[^]*result.*=.*bcrypt.compareSync.*myPlaintextPassword( |),( |)hash[^]*END_SYNC/gi, "You should call bcrypt.compareSync on myPlaintextPassword with the hash generated in the last line"); }, xhr => { throw new Error(xhr.statusText); })'

Challenge Seed

Solution

// solution required