electron 集成 SQLCipher

mac

安装 brew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装 sqlcipher

brew options sqlcipher
brew install sqlcipher

这部分不知道有没有起作用

export LDFLAGS="-L/usr/local/lib"
export CPPFLAGS="-I/usr/local/include -I/usr/local/include/sqlcipher"
export CXXFLAGS="$CPPFLAGS"

克隆 sqlcipher 源码,并链接

git clone https://github.com/sqlcipher/sqlcipher.git
pushd sqlcipher

make clean

./configure --enable-tempstore=yes --enable-load-extension --disable-tcl --with-crypto-lib=commoncrypto CFLAGS="-DSQLITE_HAS_CODEC -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS5" LDFLAGS="-framework Security -framework Foundation"

成功后该文件夹下出现 .libs 隐藏文件夹

创建 custom-binding.gyp 文件

{
  "includes": [ "deps/common-sqlite.gypi" ],
  "variables": {
  },
  "targets": [
    {
      "target_name": "<(module_name)",
      "include_dirs": [
        "<!(node -e \"require('nan')\")",
        "/Users/jinghongqiu/Desktop/sqlcipher/"
      ],
      "libraries": [
        "/Users/jinghongqiu/Desktop/sqlcipher/.libs/libsqlcipher.a"
      ],
      "sources": [
        "src/database.cc",
        "src/node_sqlite3.cc",
        "src/statement.cc"
      ]
    },
    {
      "target_name": "action_after_build",
      "type": "none",
      "dependencies": [ "<(module_name)" ],
      "copies": [
          {
            "files": [ "<(PRODUCT_DIR)/<(module_name).node" ],
            "destination": "<(module_path)"
          }
      ]
    }
  ]
}

/Users/jinghongqiu/Desktop/sqlcipher 需要替换成 sqlcipher 克隆下来的路径

在 electron 项目中执行命令

echo "Copying custom binding.gyp (node-sqlite3)"
cp custom-binding.gyp node_modules/sqlite3/binding.gyp

echo "Rebuilding node-sqlite3 bindings with statically linked SQLCipher (libsqlcipher.a)"
npm rebuild sqlite3 --build-from-source --static_linking_path=/Users/jinghongqiu/Desktop/sqlcipher/.libs/libsqlcipher.a --runtime=electron --target=4.0.8 --dist-url=https://atom.io/download/electron

/Users/jinghongqiu/Desktop/sqlcipher 需要替换成 sqlcipher 克隆下来的路径
--target=4.0.8 中的数字为 electron 的版本

使用

// 在 electron 里才能使用
var sqlite3 = require('sqlite3')
var db = new sqlite3.Database('./test.sqlcipher')

db.serialize(() => {
  db.run("PRAGMA KEY = 'secret'")
  db.run("CREATE TABLE messages(id INTEGER, user VARCHAR, msg TEXT)")

  db.run("INSERT INTO messages(id, user, msg) VALUES (1, 'coolaj86', 'this is test message number one')")

  db.get("SELECT * FROM messages", (err, data) => {
    if (err) {
      console.error(err)
      return
    }
    console.log(data)
  })
})

用可视化工具打开 test.sqlcipher ,如果需要输入密码则集成成功。输入密码 secret,如果无法打开,则有可能是可视化工具问题(如 SQLiteManager 正确密码也无法打开)

参考

Building SQLCipher for node.js on Raspberry Pi 2
Setting up SQLCipher with node-sqlite3 and Electron
在 Node.js 中使用 SQLCipher

原文地址:https://www.cnblogs.com/NKnife/p/10515662.html

时间: 2024-10-11 16:22:55

electron 集成 SQLCipher的相关文章

electron集成C++ dll 实践

#1 背景 最近需要做桌面端项目,打算尝试使用 electron 来开发,开发之前需要调研一些可行性,最关键的一点是:集成公司的统一登录 sdk,登录的 sdk 只有 C++ sdk 才能实现单点登录,所以这里就放弃去集成 js 的 sdk. #2 怎么集成C++ dll Google全网,最终放弃addons编译那种,太过于复杂,剩下两种方式:第一种:node-ffi第二种:node-ffi-napi #3 为啥放弃node-ffi-napi这种方式 坦白说,napi 这种方式安装啥的都很方便

iOS SQLite加密之SQLCipher

至于SQLCipher,我就不多说了,百度一下,你就知道.公司的iOS APP要给SQLite,今天就上网查了些资料,做了下整理,主要参考SQLCipher的官方集成文档,有不妥之处大家提出来我再改进,感谢拍砖.官方集成文档:https://www.zetetic.net/sqlcipher/ios-tutorial/. Prerequisites 安装Xcode开发环境,不用多说了吧. OpenSSL 本教程用苹果提供的FrameWork:CommonCrypto,可在工程,Target,Bu

nodejs集成sqlite

正在物色node上面的轻量级嵌入式数据库,作为嵌入式数据库的代表,sqlite无疑是个理想的选择方案.npm上集成sqlite的库主要有两个--sqlite3和realm. realm是一个理想的选择方案,它最初是为移动app设计的,在node也可以运行的,但是不支持Windows系统.sqlite3是一个专为nodejs设计的,在nodejs上面生态更健壮,因此最终选择sqlite3. sqlite3几乎支持所有版本的nodejs,同时也可以和nwjs集成. 安装 基于npm安装 npm in

ORMLite整合SQLCipher

Android数据库加密,目前就是SQLCipher对SQLite整体加密,微信也是使用这种方式.开源,且支持很多平台. SQLCipher虽说开源了,但是编译好的jar和so文件,还是要收费的. 但是,我又想用ORMLite这么办?那就把ORMLite和SQLCipher 整合到一起! 1.SQLCipher的集成方式有2种.这里使用的是第二种. 地址:https://www.zetetic.net/sqlcipher/sqlcipher-for-android/ SQLCipher的jar包

将现有vue项目基于electron打包成桌面应用程序

一.前言 项目本来打算采用B/S架构去做的,只是在"人群中多看了你一眼",便直接撸了. 二.使用electron集成桌面应用 本身项目是使用vue-cli开发的,在使用electron之前,需要将本身的项目打包好后打开index.html能显示网页.因为刚接触便直接拿官方demo进行打包了. 1.克隆官方demo:git clone https://github.com/electron/electron-quick-start 2.cd electron-quick-start-&g

Android 数据库加密

一 一个简短的引论   SQLite是一个轻量的.跨平台的.开源的数据库引擎.它的读写效率.资源消耗总量.延迟时间和总体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方式(如Android.iOS). Android系统内置了SQLite数据库.而且提供了一整套的API用于对数据库进行增删改查操作.具体就不具体说明了. 然而.Android平台自带的SQLite有一个致命的缺陷:不支持加密.这就导致存储在SQLite中的数据能够被不论什么人用不论什么文本编辑器查看到.假设是普通的数据还好

vuejs electron webpack集成使用

传统的vue SPA页面在浏览器环境中使用,但是有的时候我们还希望能够做成一个类似于桌面的app在PC上使用,希望不仅可以使用所有的浏览器SPA的功能,你也可能外加host os的功能,比如文件的本地保存,离线使用等.这时,electron就是一个很好的备选方案.electron本身集成了一个chrome核心的浏览器以及nodejs server模块,既可以使用已有的web技术栈,又能借助electron的跨平台能力,从而实现cross-platform的原生app. https://githu

使用electron开发一个h5的客户端应用创建http服务模拟后台接口mock

使用electron开发一个h5的客户端应用创建http服务模拟后端接口mock 在上一篇<electron快速开始>里讲述了如何快速的开始一个electron的应用程序,既然electron是可以直接使用node环境编写程序的,那么我们就可以有很多可以处理的事,比如我们可以做个可视化的前端构建工具,或者我们可以建一个后台的管理系统.基于这两天,我简单的做了一个模拟后端接口的http服务. 它可以完成如下功能: 它可以创建http本地服务 它可以模拟后端的多种请求方式,如get.post.pu

使用SQLCipher加密数据库

Xcode中集成了免费的sqlite,但是不提供加密的模块,突然有一天,蛋疼的客户要求把数据进行加密,于是乎就寻找使用简单并且可以把数据迁移过度到加密数据库的框架. SQLCipher是第三方的开源框架,实现对sqlite的加密,官网链接:http://sqlcipher.net.下面开始下载并导入框架.(使用命令行下载) 一.使用SQLCipher需要3个文件:sqlcipher,openssl-xcode,openssl-1.0.0e 下载 openssl-xcode cd ~/Docume