It has been heavily inspired by the new PHP password hashing
API but, following
the node.js philosophy, hashing is done asynchronously.

Furthermore, to make the interfaces as easy to use as possible, async
functions can either be used with callbacks or they return
promises
which will make them super easy to work with [generators](https://gith
ub.com/petkaantonov/bluebird/blob/master/API.md#generators)!

The other ones I found were too complicated and/or were missing
important features.

The main missing feature is the needRehash() function: cryptography
is a fast-moving science and algorithms can quickly become obsolete or
their parameters needs to be adjusted to compensate the performance
increase of recent computers (e.g. bcrypt cost
factor).

This is exactly what this function is for: checking whether a hash
uses the correct algorithm (and options) to see if we need to compute
a new hash for this password.