2017-08-26 37 views
-2

任何人都可以幫我解決這個問題嗎?如何解決javascript程序的這個錯誤

TypeError: Salt must be a buffer 
    at TypeError (native) 
    at pbkdf2 (crypto.js:579:20) 
    at Object.exports.pbkdf2Sync (crypto.js:570:10) 

這是函數:

function hash (input, salt) { 
    // How do we create a hash? 
    var hashed = crypto.pbkdf2Sync(input, salt, 10000, 512, 'sha512'); 
    return ["pbkdf2", "10000", salt, hashed.toString('hex')].join('$'); 
} 

這就是我如何發送參數:

var dbString = rows[0].password; 
var salt = dbString.split('$')[2];//here i am taking the 2nd column value from a table with 3 columns 
var hashedPassword = hash(new Buffer(password, 'binary'), salt); // then passing it to the function hash 
+0

您是否嘗試過'新的緩衝區(鹽,「二進制「)'? –

+0

我試過這個,但沒有刪除錯誤。 –

+1

請勿使用「需要解決此錯誤」形式的標題。幾乎所有的帖子都是爲了解決一些錯誤。描述標題**中的錯誤**。要解決您的具體問題,請嘗試閱讀錯誤消息的歷史悠久的方法,然後再次閱讀,然後再次閱讀。 – 2017-08-27 07:13:44

回答

0

按照錯誤消息:鹽必須是Buffer

扔在給Buffer(),我不知道的細節,但根據你寫的代碼,它應該是這樣的:

return ["pbkdf2", "10000", new Buffer(salt, 'binary'), hashed.toString('hex')].join('$'); 
+1

說什麼錯誤信息說「回答」是什麼意思? – 2017-08-27 07:15:35

+0

@torazaburo什麼是「問題」的要點,可以通過跟蹤錯誤信息來解決? –

+0

沒有。這就是爲什麼它應該被降低和/或關閉。 – 2017-08-27 11:49:54