2017-01-10 7 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?ハッシュは塩から生成されるので、平文のパスワードを比較するのにハッシングで使用された元の塩が含まれていないのはなぜですか?

答えて

3

塩は、データベースに格納bcryptの文字列の一部である、例えばDo I need to store the salt with bcrypt?

+0

おかげで答えを参照してください。 saltが生成されたハッシュの一部であれば、bcryptの安全性はいくらか低くなりますか? – user781486

+2

いいえ、そうではありません。塩はいつも利用可能でなければならず、ハッシュでそれを保管しなければならないか、またはセキュリティに別々の違いはありません。この塩の目的は、虹の表攻撃を防ぐことであり、攻撃者が塩を持っていれば、それは問題ではありません。 – Tom

関連する問題