pbkdf2-password.js
function hasher(opts, callback) {
    if (typeof opts.password !== 'string') {
      passNeeded(opts, callback);
    } else if (typeof opts.salt !== 'string') {
      saltNeeded(opts, callback);
    } else {
      opts.salt = new Buffer(opts.salt, 'base64');
      genHash(opts, callback);
    }
  }
function hasher(opts, callback) {
    if (typeof opts.password !== 'string') {
      passNeeded(opts, callback);
    } else if (typeof opts.salt !== 'string') {
      saltNeeded(opts, callback);
    } else {
      opts.salt = new Buffer(opts.salt, 'base64');
      genHash(opts, callback);
    }
  }
function hasher ( opts , callback ) { if ( typeof opts . password !== 'string' ) { passNeeded ( opts , callback ) ; } else if ( typeof opts . salt !== 'string' ) { saltNeeded ( opts , callback ) ; } else { opts . salt = new Buffer ( opts . salt , 'base64' ) ; genHash ( opts , callback ) ; } }
Hash a password, using a hash and the pbkd2
crypto module.

Options:
- `password`, the password to hash.
- `salt`, the salt to use, as a base64 string.

If the `password` is left undefined, a new
10-bytes password will be generated, and converted
to base64.

If the `salt` is left undefined, a new salt is generated.

The callback will be called with the following arguments:
- the error, if something when wrong.
- the password.
- the salt, encoded in base64.
- the hash, encoded in base64.

@param {Object} opts The options (optional)
@param {Function} callback
Hash a password using a hash and the pbkd2 crypto module .