hashp v0.1.0
node-hashp
Manage users and hashed passwords using sha-512 with variable iterations
Note: to create HashP formatted lines you can use http://bahamas10.github.io/node-hashp/ -
all processing is done on the client side.
Usage
hashp.createUserHash(user, password[, opts={}])
Create a hashp formatted hashed password string
var hashp = require('hashp');
var line = hashp.createUserHash('dave', 'foobar');
// => "dave:NUcDl5mR6T:lKjPCs5Z1+Uwl0gxYU/AWIKbTV4i8bsWlHeE5fYYwW8Tt/O6YtohJasjER5kIb8RKtniyLi0ppxn3wXQyaxGzg==:68"opts
opts.algorithm- hash algorithm to use, defaults tosha512opts.format- string format, defaults to{{user}}:{{salt}}:{{hash}}:{{iterations}}opts.iterations- number of iterations, defaults to a random number between 50 and 150opts.salt- salt to hash with, defaults to something random
var hp = new hashp.HashP(s, opts)
Create a HashP object with a given string of newline separated hashed password strings
s- the string of hashp file formatopts.duplicates- how to handle duplicate usernames, possibilities are:opts.duplicates===ignore: (default) last username in the text file winsopts.duplicates===throw: throw an error if a duplicate username is fuondopts.duplicates===allow: allows duplicates usernames (stored as an array)
passwords.txt
# some comment
dave:0Hmg1NlFBz:AoUd5RaBWFvGZD6oD+KZqGBExFH4fpvr4jtfDBsW+dBxYibzo8GwomNzAtFFbaydzN1BU67TfpksCnW9uyFI7Q==:86
# something else
skye:SJSsH5+g6A:4ESGl7LUyuaVdB2SH4laTrOKHyZL/pDhKCIb0AHbiWeJF7h5bPJS8Oxe5sm6Gmb6j2kMIKnD4YK+ceW3Wq7f3A==:95var hashp = require('hashp');
var fs = require('fs');
var data = fs.readFileSync('./passwords.txt', 'utf8');
var hp = new hashp.HashP(data);hp.exists(user)
Check if a user exists
hp.exists('dave');
// => true
hp.exists('john');
// => falsehp.checkMatch(user, password)
Check if a user/pass combo matches
hp.checkMatch('dave', 'foo');
// => true
hp.checkMatch('dave', 'bar');
// => false
hp.checkMtach('john', 'bar');
// => falseThese functions are exposed but probably don't need to be called directly
hashp.hashPassword(password[, opts={}])
Hash a password, opts is the same createUserHash
hashp.generateSalt([opts={}])
Generate a random salt, opts is the same createUserHash
CLI Usage
$ echo -n password | hashp dave
dave:RYueIcbr7E:CaNK4tuamiyOSz3zVzBaMNTxq2+E2XlPlo9/XpQ+agcmIJnL32OPh97BUrlkBDEFn7SofQNZWlCaQnVFVfGz8w==:65Installation
Use as a module
npm install hashpUse as a CLI tool
npm install -g hashpLicense
MIT License