加密存储在PouchDB中的本地数据

时间:2014-11-21 14:03:42

标签: pouchdb

是否可以加密PouchDB中的本地数据?

有没有人有例子?

由于

标记

3 个答案:

答案 0 :(得分:3)

我还没试过,但是我打算用sjcl.js加密库测试过滤袋:https://bitwiseshiftleft.github.io/sjcl/

答案 1 :(得分:1)

是的,您可以使用filter-pouch在存储文档时对其进行转换。在自述文件中有一个加密的例子。

不幸的是,这个例子仅适用于Node.js,因为WebCrypto is still not well-supported in most browsers,但是有一些努力将Node.js加密端口移植到crypto-browserify的浏览器,所以你可以试试。

答案 2 :(得分:0)

我刚刚尝试并成功按照Ingo的建议使用sjcl和filter-pouch加密了Pouch数据库。 这是最终有效的方法:

app.db
.transform({
  incoming: function (doc) {
    if( doc._id.includes("_design") )
      return doc ;
    Object.keys(doc).forEach(function (field) {
      if ( (field !== '_id') && (field !== '_attachments') && (field !== '_rev') && (field !== '_revisions')&& (field !== '_conflicts') ) {
        let aux = JSON.stringify( doc[field] ) ;
        try{
            doc[field] = sjcl.encrypt( app.usuario_logueado.clave_sjcl, aux )  ;
        }
        catch(e){
            console.log(e) ;
        };

      }
    });
    return doc;
  },
  outgoing: function (doc) {
    if( doc._id.includes("_design") )
      return doc ;
    Object.keys(doc).forEach(function (field) {
      if ( (field !== '_id') && (field !== '_attachments') && (field !== '_rev') && (field !== '_revisions')&& (field !== '_conflicts') ) {


        try{

            doc[field] = JSON.parse( sjcl.decrypt( app.usuario_logueado.clave_sjcl, doc[field] ) ) ;
        }
        catch(e){
            console.log(e) ;
        };

      }
    });
    return doc;
  }
});

希望获得帮助:)