How does node.bcrypt.js compare hashed and plaintext passwords without the salt?

bcrypt, node.js

Solution

The salt is incorporated into the hash (as plaintext). The compare function simply pulls the salt out of the hash and then uses it to hash the password and perform the comparison.

Problem

From github: To hash a password: ``` var bcrypt = require('bcrypt'); bcrypt.genSalt(10, function(err, salt) { bcrypt.hash("B4c0/\/", salt, function(err, hash) { // Store hash in your password DB. }); }); ``` To check a password: ``` // Load hash from your password DB. bcrypt.compare("B4c0/\/", hash, function(err, res) { // res == true }); bcrypt.compare("not_bacon", hash, function(err, res) { // res = false }); ``` From above, how can there be no salt values involved in the comparisons? What am I missing here?

Original source