加密 MONGO 中数据库中数据库的密码



我正在开发一个平均堆栈应用程序,我在硬编码的数据库中有一个用户名和密码。我想加密该密码并将其存储回数据库中。(使用 mongoDB, AngularJS, nodeJS)有什么建议吗?

它不叫加密,而是散列。您可以在nodejs中使用bcrypt模块。为了散列密码

var bcrypt = require('bcrypt');
const saltRounds = 10;
bcrypt.hash(passwordFromSignup, saltRounds, function(err, hash) {
  // store hash in database
});

并为了验证用户密码

bcrypt.compare(passwordFromLogin, hashFromDatabase, function(err, res) {
    // res evaluates to `true` if successfull login
});

假设你使用的是angularjs和node,你可以使用npm的mongoose(https://www.npmjs.com/package/mongoose)来映射你的数据。然后你可以使用bcrypt(https://www.npmjs.com/package/bcrypt)来安全地存储你的密码。

bcrypt也有盐,所以如果你想防止暴力破解,你可以研究一下。

var mg = require('mongoose');
var bcrypt = require('bcrypt');
var SALT_FACTOR = 10;
mg.connect('mongodb://localhost');
var db = mg.connection;
db.on('error', function(err){
  console.log('error', err);
});
db.once('open', function(){
  console.log('Connection successful');
});
var Schema = mg.Schema;
var mySchema = new Schema({
  name:String,
  password:String
});
var User = mg.model('User', mySchema);
mySchema.pre('save', function(next){
  var user = this;
  if (!user.isModified('password')) return next();
  bcrypt.genSalt(SALT_FACTOR, function(err, salt){
    if(err) return next(err);
    bcrypt.hash(user.password, salt, function(err, hash){
      if(err) return next(err);
      user.password = hash;
      next();
    });
  });
});
var testdata = new  User({
  name: "root",
  password: "123456"
});
testdata.save(function(err, data){
  if(err) console.log(err);
  else console.log ('WOHOO:' , data);
});

最新更新