Verwenden Sie dies: https://github.com/ncb000gt/node.bcrypt.js/
bcrypt ist einer der wenigen Algorithmen, die sich auf diesen Anwendungsfall konzentrieren. Sie sollten niemals in der Lage sein, Ihre Passwörter zu entschlüsseln. Überprüfen Sie nur, ob ein vom Benutzer eingegebenes Klartext-Passwort mit dem gespeicherten / verschlüsselten Hash übereinstimmt.
bcrypt ist sehr einfach zu bedienen. Hier ist ein Ausschnitt aus meinem Mongoose-Benutzerschema (in CoffeeScript). Stellen Sie sicher, dass Sie die asynchronen Funktionen verwenden, da die Verschlüsselung (absichtlich) langsam ist.
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
Lesen Sie auch diesen Artikel, der Sie davon überzeugen sollte, dass bcrypt eine gute Wahl ist und Ihnen hilft, nicht "gut und wirklich effektiv" zu werden.