Använd detta:https://github.com/ncb000gt/node.bcrypt.js/
bcrypt är en av bara några algoritmer som fokuserar på detta användningsfall. Du ska aldrig kunna dekryptera dina lösenord, bara verifiera att ett användarinmatat klartextlösenord matchar den lagrade/krypterade hashen.
bcrypt är mycket enkel att använda. Här är ett utdrag från mitt Mongoose User-schema (i CoffeeScript). Se till att använda asynkroniseringsfunktionerna eftersom bycrypt är långsam (med avsikt).
class User extends SharedUser
defaults: _.extend {domainId: null}, SharedUser::defaults
#Irrelevant bits trimmed...
password: (cleartext, confirm, callback) ->
errorInfo = new errors.InvalidData()
if cleartext != confirm
errorInfo.message = 'please type the same password twice'
errorInfo.errors.confirmPassword = 'must match the password'
return callback errorInfo
message = min4 cleartext
if message
errorInfo.message = message
errorInfo.errors.password = message
return callback errorInfo
self = this
bcrypt.gen_salt 10, (error, salt)->
if error
errorInfo = new errors.InternalError error.message
return callback errorInfo
bcrypt.encrypt cleartext, salt, (error, hash)->
if error
errorInfo = new errors.InternalError error.message
return callback errorInfo
self.attributes.bcryptedPassword = hash
return callback()
verifyPassword: (cleartext, callback) ->
bcrypt.compare cleartext, @attributes.bcryptedPassword, (error, result)->
if error
return callback(new errors.InternalError(error.message))
callback null, result
Läs också den här artikeln, som bör övertyga dig om att bcrypt är ett bra val och hjälpa dig att undvika att bli "väl och verkligt utslagen".