Oke - saya sudah menemukan jawabannya.
Di sistem lokal saya, saya memiliki versi node yang lebih baru, tetapi pada versi yang saya gunakan (di AWS ElasticBeanstalk) menggunakan v0.10.36.
Jika Anda melihat kode untuk passport-local-mongoose
Anda akan melihat ini:
var pbkdf2DigestSupport = semver.gte(process.version, '0.12.0');
...
var pbkdf2 = function(password, salt, callback) {
if (pbkdf2DigestSupport) {
crypto.pbkdf2(password, salt, options.iterations, options.keylen, options.digestAlgorithm, callback);
} else {
crypto.pbkdf2(password, salt, options.iterations, options.keylen, callback);
}
};
Jadi, jika dua versi node yang berbeda memiliki satu di atas 0.12.0 dan satu di bawah, Anda akan mendapatkan fungsionalitas kripto yang berbeda.