2014-01-16 1 views
0

Я использую moduleJS Crypto Module для шифрования пароля.Ошибка NodeJs Crypto -Object не имеет метода pbkdf2Sync

Пример кода:

crypto.pbkdf2Sync(password, salt, 200, 64).toString('base64'); 

Но я не уверен, что всякий раз, когда я называю этот метод, следующую ошибку, показанную

TypeError: Объект # не имеет метод 'pbkdf2Sync'

Пожалуйста, дайте мне знать, в чем проблема

Спасибо всем

+0

Похоже, что ваш объект 'crypto' не имеет метода' pbkdf2Sync'. Возможно, ваша версия узла меньше, чем '0.9.3', а именно, когда этот метод был добавлен в модуль' crypto'? (Сравнить: ['0.9.2'] (http://nodejs.org/docs/v0.9.2/api/crypto.html) vs. [' 0.9.3'] (http://nodejs.org/docs /v0.9.3/api/crypto.html).) – apsillers

+0

ya этого метода нет. это версия, которую я использую. $ node - v 0.8.15 – niran

ответ

1

pbkdf2Sync был добавлен в модуль Crypto в версии 0.9.3.

Вы можете либо модернизировать установку узла до 0.9.3, либо использовать асинхронную версию функции crypto.pbkdf2, для которой требуется обратный вызов.

Если предыдущий код выглядел

var result = crypto.pbkdf2Sync(password, salt, 200, 64); 
var encodedResult = result.toString('base64'); 
doStuff(encodedResult); 

Тогда асинхронный код может выглядеть следующим образом:

crypto.pbkdf2Sync(password, salt, 200, 64, function(err, result) { 
    var encodedResult = result.toString('base64'); 
    doStuff(encodedResult); 
}); 

Это просто пример; полное обсуждение синхронных и асинхронных операций значительно выходит за рамки этого вопроса. Один хороший обзор темы - How do I return the response from an asynchronous call?