背景
我正在尝试在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版本。
答案 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
中找到生成加密数据库的源代码。