sqlcipher 命令行给db外部加密的实现
来源:互联网 发布:软件系统结构图阶段 编辑:程序博客网 时间:2024/04/28 06:37
关于Sqlcipher的加密解密
本文主要实验目的:外部用sqlcipher命令行给已有的数据库文件加密,而在Android程序中解密应用。
1. 首先 sqlcipher命令行Linux环境搭建。
https://www.zetetic.net/sqlcipher/下载源码。
或者
到https://github.com/sqlcipher/sqlcipher下载zip包,在linux系统下编译运行。
- 1.解压
- unzip -q sqlcipher-master.zip
- cd sqlcipher-master
- 2.编译
- ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"
- make
编译完就会出现一个sqlcipher的可执行文件。
说明,在ubuntu12.04环境下configure sqlcipher 会出现诸多error,经过反复查找问题,发现原来是编译环境缺少东西,主要缺少openssl相关库:
(ubuntu12.04下默认的gcc,g++为 4.6.3 configure时候老是找不着,试着重装gcc/g++ 4.4 ,congifure成功)。
sudo apt-get install openssl
sudo apt-get install libssl-dev
以及gcc也做了不同版本的测试。
最终configure完成后,make的过程又出现一些莫名其妙的error, 在头文件以及alter.c文件缺少* )之类的。
由于坚信源码不会有什么问题,肯定是编译过程哪里出的毛病,所以回头看看configure,发现出现 tclsh cannot found的警告。
于是 apt-get install tclsh8.5 安装完成。($ sudo apt-get install tcl tk)
删除之前编译的工程,重新configure 以及make。终于编译通过,成功生成sqlcipher可执行文件。
2. Sqlcipher使用
(当然,如果没有安装Sqlite3 ,还需要apt-get install 安装一下)
和sqlite差不多的用法
- ./sqlcipher test.db #创建一个db文件
- sqlite> PRAGMA key = 'test'; #设置密码
- sqlite> .e #退出
三、把没加密的db文件进行加密步骤:
- 1.先用sqlite打开db文件
- sqlite3 test.db
- 2.把数据导成sql格式
- sqlite> .output test.sql
- sqlite> .dump
- sqlite> .e
- 3.加密
- ./sqlcipher test2.db #创建一个新的db文件
- sqlite> PRAGMA key = 'test'; #设置密码
- sqlite> .read test.sql #导入数据
- sqlite> .e #退出
完成,生成的test2.db文件就是一个加密过的db文件了。
以上是前期使用过程,后面讲述遇到的问题。
1、如何判断是否有加密过?
- ./sqlcipher test.db #没加密过的
- sqlite> .schema
- CREATE TABLE XXXXXX... #显示了表的创建语句
- ./sqlcipher test2.db #没加密过的
- sqlite> .schema
- Error: file is encrypted or is not a database
3. 将加密好的文件copy至Android终端下,通过Android代码入口可以成功访问数据库文件。
android sqlcipher使用详情参见上一篇文章
- sqlcipher 命令行给db外部加密的实现
- Ubuntu下使用SQLCipher命令行对db加密
- LitePal结合SQLCipher实现DB数据库操作和加密
- SQLCipher 命令行使用 后台加密
- 如何使用SQLCipher给FMDB的数据库加密?
- 用Sqlcipher给现有的SQLite数据库加密
- Android 使用Sqlcipher给Sqlite加密
- SQLCipher实现ios平台sqlite数据库文件加密
- xutils引入SQLcipher实现加密本地数据库
- SqlCipher在Android上数据库的加密
- 基于Sqlcipher和GreenDao的数据库加密
- 结合SQLCipher的LKDBHelper数据库加密
- Nodejs sqlcipher 读取加密的 sqlite3 数据库文件
- 使用SQLCipher进行数据库加密代码实现以及java.lang.UnsatisfiedLinkError 报错的解决
- SQLite加密库SQLCipher
- sqlite加密-SQLCipher
- sqlite加密-SQLCipher
- sqlite加密-SQLCipher
- easyui datagrid 编辑器添加事件
- Activity切换动画无效(android:windowIsTranslucent)影响(android:windowAnimationStyle)
- sudo 命令执行的很慢,很久才出现密码输入
- 几种抽奖方式之轮盘抽奖
- eclipse failed to create the java virtual machine 问题
- sqlcipher 命令行给db外部加密的实现
- 编程技巧20法 (上)
- HLSL Semantics (HLSL语义)
- jQuery(基本用法)
- Eclipse中<uses-permission>和<permission>和<uses-feature>区别
- 编程技巧20法 (下)
- 代码签名探析
- Python ---IDEL清屏
- mybatis 调用存储过程