在Electron-Builder应用程序中将sqlcipher与sqlite3一起使用

时间:2019-05-12 22:20:45

标签: electron sqlcipher electron-builder node-sqlite3

背景

我正在尝试在Electron应用程序中使用sqlite3和sqlcipher加密sqlite数据库。

在sqlite3 npm页面here

它说要安装这样的版本,

  

纱线添加sqlite3@4.0.8 --build-from-source --sqlite_libname = sqlcipher   --sqlite = {brew --prefix --runtime = electron --target = 4.0.0 --dist-url = https://atom.io/download/electron

我已经用home brew安装了sqlcipher。

brew install sqlcipher

问题示例

我正在尝试在我的Electron应用程序中创建这样的加密数据库

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构建。

如何创建可在MacOS和Windows上使用的加密sqlite版本。

1 个答案:

答案 0 :(得分:0)

  

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

由于不要求输入任何类型的密码,因此数据库创建一定存在问题。在Electron-builder的自述文件中,它指出

  

要确保您的本机依赖性始终与电子版本匹配,只需将脚本“ postinstall”:“ electron-builder install-app-deps”添加到package.json。

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

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

此外,我还创建了一个小型Vue + Electron + Vuetify + SQLite(带有Seqlize和Sqlcipher)入门套件,其中包含您已经设置的所有功能。可以在src/renderer/models.js中找到生成加密数据库的源代码。

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