我在node.js中使用pbkdf2進行散列密碼。crypto.pbkdf2是異步的,我如何將它視爲同步?
我的問題是,我正在響應身份驗證的請求,而且我正在進行身份驗證,如果傳遞的憑據是正確的。我假定pbkdf2是異步的,因爲它可能需要大量的時間(取決於迭代的大小)。然而,將剩餘的認證邏輯轉移到一個單獨的方法來利用回調看起來有點難看。
有沒有比使用計時器或將所有連續驗證邏輯放入單獨函數更好的方法?我知道大多數人會說我應該使用回調,但在我的用例中,這是沒有意義的。在我將pbkdf2應用於傳遞的密碼之前,我無法繼續進行身份驗證。
我是否正確地認爲bcrypt是基於blowfish(根據來自node.bcrypt.js項目的維基百科鏈接)?我使用的是pbkdf2,它的鹽大於128位,迭代次數爲10000次,這是經NIST批准的,而blowfish bcrypt則不是(參考wikipedia artical)。我只是好奇你的評論,bcrypt更安全。對我而言,這是最可能的。不是那麼重要,但我想用最安全的方法。 – Metalskin
@Metalskin,我調查了一下。 'Bcrypt'在較短的路徑句中更強,但是它開始在長度超過55個字符的路徑字節上丟失「pbkdf2」。但他們都足夠安全,所以沒有真正的區別。看到[這個答案](http://stackoverflow.com/questions/4433216/password-encryption-pbkdf2-using-sha512-x-1000-vs-bcrypt)瞭解更多信息。 –
感謝這個鏈接真的很有幫助,我不認爲我會超過55個字符,所以它應該可以使用bcrypt。看起來像scrypt會更好,但我找不到node.js的任何活動項目。 – Metalskin