sqlite数据库加密-SQLCipher编译安装及使用
2017-03-30 23:36
441 查看
一、 SQLCipher介绍
SQLCipher是一个开源的软件,它提供的SQLite数据库的透明加密,在数据页被写入之前加密存储和读取解密,基于256-bit AES加密。目前支持的平台有C/C++, Obj-C, QT, Win32/.NET, Java, Python, Ruby, Linux, Mac OS X, iPhone/iOS, Android, Xamarin.iOS, 和Xamarin.Android。
二、 编译安装
1.安装openssl加密库
sudo apt-get install openssl sudo apt-get install libssl-dev
2.安装tclsh
sudo apt-get install tclsh
3.下载安装SQLCipher
下载地址:https://github.com/sqlcipher/sqlcipher3.1修改源文件
在 src/sqliteInt.h中添加如下代码:#define SQLITE_LIMIT_WORKER_THREADS 11
3.2执行configure
./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto" CXXFLAGS=-fPIC
3.3.编译源文件
make
4.测试
5.sqlcipher使用demo
/* gcc c_demo.c -o demo -lsqlcipher */ #include "sqlite3.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #define ERROR(X) static int callback(void *NotUsed, int argc, char **argv, char **col_name) { int i; for(i=0; i<argc; i++) { printf("%s\n", argv[i] ? argv[i] : "NULL"); } printf("\n"); return 0; } int main(int argc, char *argv[]) { sqlite3 *db; const char *file= "test.db"; const char *key = "123456";//key为使用sqlcipher设置的密码 if (sqlite3_open(file, &db) == SQLITE_OK) { int rc; if(db == NULL) { ERROR(("sqlite3_open reported OK, but db is null, retrying open %s\n", sqlite3_errmsg(db))) } //验证密码是否正确 if(sqlite3_key(db, key, strlen(key)) != SQLITE_OK) { ERROR(("error setting key %s\n", sqlite3_errmsg(db))) exit(-1); } //SQLlite 操作代码... char* sql1 = "create table if not exists test(int id,varchar name);"; char* sql2 = "insert into test values(1,'hello');"; char* sql3 = "select * from test;"; char* err_msg = NULL; rc = sqlite3_exec(db, sql1, callback, 0, &err_msg); if( rc!=SQLITE_OK ) { fprintf(stderr, "SQL error: %s\n", err_msg); sqlite3_free(err_msg); err_msg = NULL; } rc = sqlite3_exec(db, sql2, callback, 0, &err_msg); if( rc!=SQLITE_OK ) { fprintf(stderr, "SQL error: %s\n", err_msg); sqlite3_free(err_msg); err_msg = NULL; } rc = sqlite3_exec(db, sql3, callback, 0, &err_msg); if( rc!=SQLITE_OK ) { fprintf(stderr, "SQL error: %s\n", err_msg); sqlite3_free(err_msg); err_msg = NULL; } sqlite3_close(db); } }
相关文章推荐
- Linux安装编译SQLCipher,对sqlite数据库加密、解密、修改、去掉密码操作
- python利用windows编译的sqlcipher工具对sqlite数据库加密
- Android使用SQLCipher对SQLite数据库进行加密
- Android使用SQLCipher对SQLite数据库进行加密
- MAC上反编译android apk---apktool, dex2jar, jd-jui安装使用(含手动签名)
- Ubuntu编译安装boost并在eclipse C/C++中使用
- linux下使用phpize编译安装mcrypt扩展
- 编译安装Nginx为了合理配合Drupal7 需要使用到的配置参数
- Boost下载安装编译配置使用指南
- ubuntu 下 ssldump 编译问题解决,及安装使用
- CentOS6.7下使用cmake编译安装MySQL5.5.32
- cocos2dx 使用Luajit将Lua脚本编译为bytecode,从而实现加密
- protoc-gen-lua 编译、安装、使用教程
- 如何下载编译安装使用最新版boost
- Android 秒级编译方案-Freeline安装使用
- 在Mac OS X 10.10.3下使用源码包编译安装GCC5.1
- python 3.5 原码包编译安装之后,方向箭头不能使用。缺少readline-devel*软件包
- 手把手教你在centos下编译安装配置高性能web服务器环境nginx+php(fast-cgi)+mysql等/适合小内存vps使用
- 【系列3】使用Dockerfile创建带编译安装nginx服务的Centos Docker镜像
- VS 2008的64位编译环境的安装和使用