2017-01-10 59 views
2

我想使用node.js bcrypt在將密碼存儲到數據庫之前對密碼進行哈希處理。爲什麼不用鹽來比較密碼在bcrypt中是否正確?

此鏈接提供了文檔。 https://github.com/kelektiv/node.bcrypt.js

這裏是一個哈希密碼的例子。

var bcrypt = require('bcrypt'); 
const saltRounds = 10; 
const myPlaintextPassword = 's0/\/\P4$$w0rD'; 

var salt = bcrypt.genSaltSync(saltRounds); 
var hash = bcrypt.hashSync(myPlaintextPassword, salt); 
// Store hash in your password DB. 

這是檢查密碼的代碼。

// Load hash from your password DB. 
bcrypt.compareSync(myPlaintextPassword, hash); // true 

這是我不明白。在bcrypt.compareSync,爲什麼沒有參數salt?由於哈希是從salt生成的,爲什麼比較明文密碼不涉及哈希中使用的原始鹽?

回答

3

鹽是字符串bcrypt在數據庫中存儲的一部分,見例如在Do I need to store the salt with bcrypt?

+0

感謝答案。如果salt是生成的哈希的一部分,那麼會不會使得bcrypt不那麼安全? – user781486

+2

不,它沒有。鹽總是必須可用,用散列存儲它,或者單獨對安全性沒有影響。鹽的目的是防止彩虹桌攻擊,爲此目的,如果攻擊者擁有鹽,這不是問題。 – Tom

相關問題