我正在开发一个平均堆栈应用程序,我在数据库中有一个用户名和密码,我硬编码。我想加密该密码并将其存储回数据库中。 (使用mongoDB,AngularJS,nodeJS) 有什么建议吗?
答案 0 :(得分:0)
假设您正在使用angularjs和节点,您可以使用来自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);
});
答案 1 :(得分: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
});