2016-01-13 57 views
0

我需要將兩個變量的值分開以加密並存儲爲不同的值。如何加密以下輸入並將其存儲在mongodb中給定模式

var newSchema = mongoose.Schema(
 
{ 
 
    type:String, 
 
    name:String 
 
}); 
 

 
module.exports = restful.model('abc',newSchema); 
 
var db=req.db; 
 
var collection = db.get('abc'); 
 
collection.insert(req.body, function(err, result){ 
 
    res.send(
 
    (err === null) ? { msg: '' } : { msg: err }); 
 
});

回答

1

使用Crypto模塊加密/解密發送到數據庫之前。

你會想要替換你想要加密的req.body中的每個項目。如:

const cipher = crypto.createCipher('aes192', secret); 
cipher.update(req.body.type, 'utf8', 'base64'); 

req.body.type = cryptocipher.final('base64') 

pbkdf2密鑰散列的示例。

var plain = 'my password'; 
var salt = crypto.randomBytes(16).toString('base64') 


crypto.pbkdf2(plain, salt, 100000, 512, 'sha512', function(err, key){ 
    if (err) throw err; 

    console.log(key.toString('hex'));  

}); 

注意:改變10000(迭代次數)作爲速度和安全性之間的權衡。

+0

即使在因爲「Collection.insert(req.body)」而被加密之後,我也不完全知道如何維護req.body中的json結構,因爲我直接在req.body上使用加密或bcrypt後不會接受它。你能告訴我該怎麼做嗎?但感謝您的答案。 –

+0

用示例編輯 –

+0

嘿謝謝我使用CyptoJS加密的答案,它存儲加密的字符串,但是當解密時,我得到'找不到'未定義的鹽'這真的很緊急。 –

相關問題