Использование sqlcipher с sqlite3 в приложении Electron-Builder - PullRequest
0 голосов
/ 13 мая 2019

Фон

Я пытаюсь зашифровать свою базу данных sqlite с помощью sqlite3 и sqlcipher в приложении Electron.

На странице sqlite3 npm здесь

Там написано, чтобы установить сборку, как это,

пряжа добавить sqlite3@4.0.8 --build-from-source --sqlite_libname = sqlcipher --sqlite = brew --prefix --runtime = электрон --target = 4.0.0 --dist-url = https://atom.io/download/electron

Я установил 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.

Как мне создать зашифрованную сборку sqlite, которая будет работать на MacOS и Windows.

1 Ответ

0 голосов
/ 13 мая 2019

Я могу открыть файл и посмотреть данные внутри него.

Так как он не запрашивает пароли любого типа, проблема должна быть в создании базы данных. В readme Электрон-строителя говорится, что

Чтобы ваши родные зависимости всегда соответствовали электронной версии, просто добавьте скрипт "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

...