2016-08-31 4 views
-4

Я хочу создать гибридное мобильное приложение, где бэкэнд - это Node js, который сохранит данные в mongodb. мой сервер работает правильно, и я подготовил маршруты для обработки запросов пользователей.Как получить реальный пароль с хешированного пароля?

Я использую bcrypt для хранения хэшей паролей в mongodb. Пароли сохраняются правильно, но моя проблема заключается в том, что я не могу получить реальный пароль, например, когда администратор передает запрос GET на сервер узла js для получения пользовательских данных, он получает хешированный пароль в интерфейсе.

это результат в переднем конце:

enter image description here

это код для хранения хэшей паролей:

UserSchema.pre('save', function (next) { 
    var user = this; 
    if (this.isModified('password') || this.isNew) { 
     bcrypt.genSalt(10, function (err, salt) { 
      if (err) { 
       return next(err); 
      } 
      bcrypt.hash(user.password, salt, function (err, hash) { 
       if (err) { 
        return next(err); 
       } 
       user.password = hash; 
       next(); 
      }); 
     }); 
    } else { 
     return next(); 
    } 
}); 

Пожалуйста, как я могу получить реальный пароль?

+4

Весь смысл хранения хэшированных паролей заключается в том, что восстановить исходный пароль невозможно. –

+1

не пытайтесь получить пароль, вы можете предоставить пароль, зашифровать и сопоставить с уже сохраненным паролем. – Aby

ответ

4

Вы не можете. Это цель хэширования паролей.

+0

спасибо за ваш ответ, это было просто сомнение – Taha

5

Это точка хеширования .. «необратимо» деформирует пароль. Если это простой хеш, вы можете взломать его с помощью радужных таблиц или других методов. Если вы использовали «соль» для хеширования пароля, я считаю, что вероятность взлома пароля еще более тонкая.

Особенно bcrypt, использующий шифр blowfish, является очень мощным алгоритмом хеширования.

Хеширование паролей стало стандартом, так что владельцы веб-сайтов физически не имеют доступа к простым паролям.

Еще один последующий вопрос: почему?

+0

спасибо за ваш ответ, это было просто сомнение – Taha

+1

Bcrypt также выполняет итерации, так что операция занимает значительное количество времени, это решающий момент. Простое хеширование паролей, даже с солью, недостаточно для их защиты, есть списки общих паролей 10M, простое хеширование происходит очень быстро, мой ноутбук может выполнять 700K SHA-256 хэшей в секунду. Дальнейшие специализированные программы для их запуска. – zaph

4

Вы не можете. По дизайну хеш-функция, особенно криптографическая хеш-функция, не обратима, или one-way function. Криптографические хэш-функции по конструкции имеют следующие свойства

  • это быстро вычислить хэш-значение для любого заданного входного
  • это неосуществимо, чтобы генерировать входной сигнал от его хэш-значение кроме пробуя все возможные входы
  • небольшие изменения входного сигнала следует изменить значение хэш так обширно, что новое значение хеш-функции появляется коррелированы со старым значением хэш
  • это невозможно найти два различных входа остроумие h то же значение хэш-функции

Это одна из многих важных частей для безопасного хранения паролей. Например, если злоумышленник получает доступ к вашему серверу и, таким образом, может запускать произвольные запросы в вашей базе данных, правильные криптографические хэш-функции гарантируют, что злоумышленник не сможет получить пароли пользователя.

Источник: Wikipedia - Cryptographic hash function.

Смежные вопросы