SQLCipher is a sqlite3 with encryption based on openssl(SQLCipher 是一个基于openssl加密功能sqlite3)
npm install sqlciphersql语句;本质上是一个经过重新编译的sqlite3,不破坏原有功能,仅仅增添了加密特性。node_sqlit3.nodenode文件。SQLCipher对整个数据库文件加密。SQLCipher安装不需要复杂的配置环境,一般系统有npm就可以针对一些环境进行安装,在过程中会自动安装构建的依赖项。与加密功能的sql语句往往放置最前面,一般是连接数据库之后,就执行这些语句。``javascript
var SQLite3 = require('sqlcipher').verbose();
var sqlite = new SQLite3.Database('./test-win.db');
sqlite.run("pragma key = 'secret'");
sqlite.run("pragma cipher = 'aes-256-cbc'");//optional, default cipher be eqaul to 'aes-256-cbc'
`sql
注意:sqlcipher该插件是在sqlite3的基础上增添了加密功能。因此,使用sqlcipher可以对数据库文件进行加密或不加密。如果要对数据库文件进行加密,则连接(创建)数据库文件后,第一条语句必须是pragma key = '...',否则将会出现意想不到的错误。
bash
npm install sqlcipher
`
通过运行以上命令,将会根据系统的环境编译出相应(系统下node版本以及node位数)的sqlciher。默认支持以下三种系统环境。- windows
- mac
- linux
通过携带参数可以在指定环境下进行编译。特定环境安装
`bash
npm install sqlcipher --target=目标运行环境版本号 --target_arch=目标运行环境位数 --dist-url=目标运行环境下载地址 --runtime=目标运行环境
`
$3
sqlcipher基于openssl加密库,支持多种加密算法,在实际开发中可以使用默认算法aes-256-cbc或者在支持的加密算法中选择其中某一个。
* aes-128-cbc
* aes-192-cfb
* aes-256-cbc(默认)
* cast
* rc4$3
sqlcipher 常用api有指定加密秘钥、指定加密算法、更换秘钥等。当然,如果需要改善加密环境下的sqlite性能,有更详细的api(即sql语句)去优化项目。1.加密秘钥
`bash
pragma key = 'secret';
`2.加密算法
`bash
pragma cipher = 'aes-128-cbc';
`3.更换秘钥
`bash
pragma rekey = 'aes-128-cbc';
``