2017-01-26 86 views
0

我正在開發一個平均堆棧應用程序,並且在硬編碼的數據庫中有一個用戶名和密碼。我想加密該密碼並將其存儲回數據庫。 (使用mongoDB,AngularJS,nodeJS) 有什麼建議嗎?在mongo中加密來自數據庫的密碼

回答

0

假設您使用的是angularjs和節點,您可以使用npm中的貓鼬(https://www.npmjs.com/package/mongoose)來映射數據。然後,您可以使用bcrypt(https://www.npmjs.com/package/bcrypt)安全地存儲您的密碼。

bcrypt也有鹽,所以你可以看看,如果你想防止bruteforcing。

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); 
 
});

0

這不叫加密散列卻。您可以在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 
});