'use strict'; var crypto = require('crypto'); var _ = require('lodash'); /** * Will encrypt password in Symfony2 way using a given salt. * * @param {string} password * @param {string} salt * @returns {string} */ function encryptPassword(password, salt){ var salted = `${password}{${salt}}`; if (!salt){ salted = password; } var digest = crypto.createHash(this.algorithm).update(salted).digest('binary'); for (var i = 1; i < this.iterations; i++){ digest = crypto.createHash(this.algorithm).update( Buffer.concat([Buffer.from(digest, 'binary'), Buffer.from(salted, 'utf8')]) ).digest('binary'); } return (Buffer.from(digest, 'binary')).toString('base64'); };