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 = ;var line = hashp;// => "dave:NUcDl5mR6T:lKjPCs5Z1+Uwl0gxYU/AWIKbTV4i8bsWlHeE5fYYwW8Tt/O6YtohJasjER5kIb8RKtniyLi0ppxn3wXQyaxGzg==:68"
opts
opts.algorithm
- hash algorithm to use, defaults tosha512
opts.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 format -
opts.duplicates
- how to handle duplicate usernames, possibilities are: -
opts.duplicates
===ignore
: (default) last username in the text file wins -
opts.duplicates
===throw
: throw an error if a duplicate username is fuond -
opts.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==:95
var hashp = ;var fs = ;var data = fs;var hp = data;
hp.exists(user)
Check if a user exists
hp;// => truehp;// => false
hp.checkMatch(user, password)
Check if a user/pass combo matches
hp;// => truehp;// => falsehp;// => false
These 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==:65
Installation
Use as a module
npm install hashp
Use as a CLI tool
npm install -g hashp
License
MIT License