Last active
March 2, 2017 09:12
-
-
Save rjmacarthy/7a8cbb444ccaeba683b6205de74862b5 to your computer and use it in GitHub Desktop.
Bcrypt work factor testing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var bcrypt = require('bcrypt'); | |
var moment = require('moment'); | |
var _ = require('lodash'); | |
var randomstring = require("randomstring"); | |
var colors = require('colors'); | |
var times = 5; | |
var i = 0; | |
var workFactor = 10; | |
test(randomPassword(), i, workFactor); | |
function test(pass, i, workFactor) { | |
var now = moment(); | |
bcrypt.hash(pass, workFactor, function(err, hash) { | |
var then = moment(); | |
loghash(workFactor, moment.duration(then.diff(now))._data, pass); | |
decrypt(pass, hash, workFactor, i); | |
}); | |
} | |
function decrypt(pass, hash, workFactor, i) { | |
var now = moment(); | |
if (i <= times) { | |
bcrypt.compare(pass, hash, function(err, res) { | |
var then = moment(); | |
logdecrypt(workFactor, moment.duration(then.diff(now))._data, res); | |
_.delay(function() { | |
i++; | |
test(randomPassword(), i, workFactor); | |
}, moment.duration(then.diff(now))._data.milliseconds + 500); | |
}); | |
} else { | |
upFactor = workFactor + 1; | |
console.log('------------- Upping factor'.red); | |
test(randomPassword(), 0, upFactor); | |
} | |
} | |
function loghash(workFactor, time, password) { | |
console.log('Hash ' + time.seconds + ' seconds. At work factor ' + workFactor + ', with password ' + password); | |
} | |
function logdecrypt(workFactor, time, password) { | |
console.log('Decrypt ' + time.seconds + ' seconds. At work factor ' + workFactor); | |
console.log('-------------'); | |
} | |
function randomPassword() { | |
return randomstring.generate(Math.floor(Math.random() * 50) + 5); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment