是否可以加密PouchDB中的本地数据?
有没有人有例子?
由于
标记
答案 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;
}
});
希望获得帮助:)