Utilisez ceci: https://github.com/ncb000gt/node.bcrypt.js/
bcrypt est l'un des quelques algorithmes concentré sur ce cas d'utilisation. Vous ne devriez jamais être en mesure de déchiffrer les mots de passe, seulement de vérifier que l'utilisateur est entré en texte clair le mot de passe correspond à la stockées/hachage chiffré.
bcrypt est très simple à utiliser. Voici un extrait de mon Mangouste Utilisateur de schéma (en CoffeeScript). Assurez-vous d'utiliser l'async fonctions comme bycrypt est lente (sur le but).
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
Lisez également cet article qui devrait vous convaincre que bcrypt est un bon choix et vous aider à éviter de devenir "vraiment bien et effed".