代码之家  ›  专栏  ›  技术社区  ›  wuno

在Electron Builder应用程序中使用sqlicipher和sqlite3

  •  0
  • wuno  · 技术社区  · 5 年前

    背景

    我试图在电子应用程序中使用sqlite3和sqlcipher加密我的sqlite数据库。

    在sqlite3 npm页面上 here

    它说要像这样安装构建,

    yarn add sqlite3@4.0.8--从源代码生成--sqlite_libname=sqlcipher --绿泥石= brew --prefix --运行时=电子--目标=4.0.0--距离URL= https://atom.io/download/electron

    我已经安装了带有家庭BREW的sqlcipher。

    brew install sqlcipher
    

    问题示例

    我正试图在我的电子应用程序中创建这样的加密数据库,

    const sqlite3 = require('sqlite3').verbose();
    var db = new sqlite3.Database('./src/encryptedDB.sql');
    
    db.serialize(function() {
          db.run("PRAGMA KEY = 'secret'");
          db.run("PRAGMA CIPHER = 'aes-256-cbc'");
          db.run('CREATE TABLE IF NOT EXISTS clients (info TEXT)');
          var stmt = db.prepare('INSERT INTO clients VALUES (?)');
          for (var i = 0; i < 10; i++) {
            stmt.run('wunO Background Client Number - ' + i);
          }
          stmt.finalize();
        });
    

    这不是创建加密数据库。我可以打开文件并查看其中的数据。

    问题

    我试图弄清楚这是否是我的语法中的一个简单问题,或者当电子生成器在后台运行它的魔力时,它正在重建sqlite并删除 sqlcipher 建造。

    如何创建一个加密的sqlite构建,它将在MacOS和Windows上工作。

    0 回复  |  直到 5 年前
        1
  •  0
  •   riz    5 年前

    我可以打开文件并查看其中的数据。

    因为它不要求任何类型的密码,所以数据库创建肯定有问题。在电子制造者自述中,它指出

    为了确保您的本地依赖项始终与电子版本匹配,只需在package.json中添加脚本“postill”:“electron builder install app deps”。

    将下面的行放入package.json并再次重复安装过程,这为我解决了问题。

    "postinstall": "install-app-deps",
    

    此外,我还创建了一个小的Vue+Electron+Vuetify+sqlite(带有seqlize&sqlicipher)启动工具包,它包含了您需要设置的所有内容。生成加密数据库的源代码可以在 src/renderer/models.js 看一看。

    https://github.com/rizalishan/vue-electron-starter