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が生成されたハッシュの一部であれば、bcryptの安全性はいくらか低くなりますか? – user781486
いいえ、そうではありません。塩はいつも利用可能でなければならず、ハッシュでそれを保管しなければならないか、またはセキュリティに別々の違いはありません。この塩の目的は、虹の表攻撃を防ぐことであり、攻撃者が塩を持っていれば、それは問題ではありません。 – Tom