将加密文件用作数据库而不是mongodb用于节点/快速应用

时间:2017-05-28 02:19:23

标签: node.js mongodb express encryption database

如何为您的NodeJS / express应用程序使用加密文件作为数据库而不是MongoDB或MySQL?

您将为您的数据库提供JSON格式,并且会有定期备份的服务。

看起来像这样

{
  "info": {
    "version": "0.0.1",
    "name": "Give your DB a name"
  },
  "data": {

  }
}

并有像

这样的方法
myDB.info() // => {"version" : "0.0.2", "name": "demo DB"}

myDB.get('foo'); // => 'bar'

myDB.set('foo', 'bar');

myDB.delete(key);

myDB.backup(function(err) {
    if(err) throw err;
    else console.log('DB backed up at %s', new Date().toString());
});

myDB.search('stats.comments_lookup[{stats.page.id}]', function(res) {
    console.log("search result: ", res);
});

我看到这个名为express-db的npm包,但它已经过时而没有维护。有没有更好的选择或方式呢?

1 个答案:

答案 0 :(得分:1)

不使用加密的数据库或文件,只需加密数据并将其存储在数据库中。

您可以使用crypto-js module

var CryptoJS = require("crypto-js");

// Encryption 
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123');
//Store it in any database

//Retrieve from database
// Decryption 
var bytes  = CryptoJS.AES.decrypt(ciphertext.toString(), 'secret key 123');
var plaintext = bytes.toString(CryptoJS.enc.Utf8);

console.log(plaintext);

<强>优势
在大多数情况下,您并不需要加密数据集中的整个数据。因此,只需加密敏感数据并将其他数据存储为纯文本。由于加密实际上是CPU密集型过程,因此您的应用程序运行速度会更快。