Sử dụng cái này:https://github.com/ncb000gt/node.bcrypt.js/
bcrypt là một trong số ít các thuật toán tập trung vào trường hợp sử dụng này. Bạn sẽ không bao giờ có thể giải mã mật khẩu của mình, chỉ xác minh rằng mật khẩu văn bản rõ ràng do người dùng nhập khớp với hàm băm được lưu trữ / mã hóa.
bcrypt rất dễ sử dụng. Đây là một đoạn mã từ lược đồ Người dùng Mongoose của tôi (trong CoffeeScript). Đảm bảo sử dụng các hàm không đồng bộ vì bycrypt chậm (có chủ đích).
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
Ngoài ra, hãy đọc bài viết này, bài viết này sẽ thuyết phục bạn rằng bcrypt là một lựa chọn tốt và giúp bạn tránh trở nên "tốt và thực sự hiệu quả".