android sqlite加密数据库,Android Sqlite数据库加密
Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个:
1. 对几个关键的字段使用加密算法,再存入数据库
2. 对整个数据库进行加密
SQLite数据库加密工具:
收费工具:
免费工具:
SQLCipher使用:
SQLCipher是完全开源的软件,提供256-bit AES加密
源码编译:
1. OpenSSL编译
SQLCipher源码编译需要依赖OpenSSL提供的libcrypto
下载OpenSSL源码,这里选择稳定版本1.0.1h
1 openssl-1.0.1h Admin$ ./config --prefix=/usr/local --openssldir=/usr/local/openssl2 openssl-1.0.1h Admin$ make
3 openssl-1.0.1h Admin$ maketest4 openssl-1.0.1h Admin$ make install
2. SQLCipher源码编译
1 sqlcipher Admin$ ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="/usr/local/lib/libcrypto.a"
2 sqlcipher Admin$ make
命令行使用:
1. 创建加密数据库
1 $ sqlcipher encrypted.db2 SQLCipher version 3.8.4.3 2014-04-03 16:53:12
3 Enter ".help" forinstructions4 Enter SQL statements terminated with a ";"
5 sqlite> PRAGMA key = ‘thisiskey‘;6 sqlite> create table encrypted (idinteger, name text);7 sqlite>.schema8 CREATE TABLE encrypted (idinteger, name text);9 sqlite> .q
2. 打开加密数据库
1 $ sqlcipher encrypted.db2 SQLCipher version 3.8.4.3 2014-04-03 16:53:12
3 Enter ".help" forinstructions4 Enter SQL statements terminated with a ";"
5 sqlite> PRAGMA key = ‘thisiskey‘;6 sqlite>.schema7 CREATE TABLE encrypted (id integer, name text);
3. 修改数据库密码
1 sqlite> PRAGMA rekey = ‘newkey‘;
4. 加密已有的数据库
1 $ sqlcipher banklist.sqlite32 SQLCipher version 3.8.4.3 2014-04-03 16:53:12
3 Enter ".help" forinstructions4 Enter SQL statements terminated with a ";"
5 sqlite> ATTACH DATABASE ‘encrypted.db‘ AS encrypted KEY ‘thisiskey‘;6 sqlite> SELECT sqlcipher_export(‘encrypted‘);7 sqlite> DETACH DATABASE encrypted;
5. 解密数据库
1 $ sqlcipher encrypted.db2 SQLCipher version 3.8.4.3 2014-04-03 16:53:12
3 Enter ".help" forinstructions4 Enter SQL statements terminated with a ";"
5 sqlite> PRAGMA key = ‘thisiskey‘;6 sqlite> ATTACH DATABASE ‘plaintext.db‘ AS plaintext KEY ‘‘;7 sqlite> SELECT sqlcipher_export(‘plaintext‘);8 sqlite> DETACH DATABASE plaintext;
Android版本SQLCipher使用
android版本源码,编译需要依赖的东西很多,懒得去试了,可以直接下载已经编译好的binary,官网下载,或者这里为3.1.0版本
注:github上的binary为2.1.1,实际测试在Android 4.4 kitkat上无法使用,请从官网下载最新的3.1.0版本
1. 将解压后的libs和asserts添加到工程:
2. 将工程中原有的android.database.sqlite.*全部替换为net.sqlcipher.database.*,原先的android.database.Cursor可以保留
3. 在activity或者其他调用数据库的地方,注意要在使用数据库之前加上:
1 SQLiteDatabase.loadLibs(this);
备注:使用SQLCipher命令行将原先的数据库加密之后,新数据库的version有可能为0,导致在SQLiteOpenHelper中会进入到onCreate()中,重建数据库。
解决方法,将数据库版本改回原先的版本:
1 sqlite> PRAGMA user_version = 12;
原文:http://www.cnblogs.com/treecat-roboto/p/3873707.html
android sqlite加密数据库,Android Sqlite数据库加密相关推荐
- 在 Android 应用程序中使用 SQLite 数据库以及怎么用
part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开 ...
- android模拟器的数据存放,Android模拟器在哪里存储SQLite数据库?
Android模拟器在哪里存储SQLite数据库? 我正在开发一个将数据存储在SQLite数据库中的Android应用程序. 我的问题是,当您使用模拟器时,此数据库文件存储在文件系统中的哪个位置? 我 ...
- Android数据库 之 SQLite数据库
一.关系型数据库SQLIte 每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的.与操作系统无关的SQL数据库-SQLite.SQLite第一个Alpha版本诞生于20 ...
- sqlite只能用于android系统,Android 数据库的使用 -- Sqlite
Sqlite介绍 SQLite 是一款内置到移动设备上的轻量型的数据库,是遵守 ACID(原子性.一致性.隔离性.持久性)的关联式数据库管理系统,多用于嵌入式系统中. SQLite 数据库是无类型的, ...
- sqlite数据库android使用教程,Android开发教程之 SQLite数据库的使用
在开发Android应用程序时经常需要存储数据,Android系统提供了SQLite数据库,还提供了SQLiteOpenHelper类,使我们可以很方便的操作数据库.通过一个例子来说明在Android ...
- Android内部自带的SQLite数据库操作dos命令
1:什么叫做SQLite数据库 Android系统内核是Linux系统,Android系统很特殊,他自带了一个SQLite数据库,轻量型的一款嵌入式的数据库 它占用资源非常的低,在嵌入式设备中,可能只 ...
- android sqlite alert table,android sqlite数据库操作
sqlite有一点不同于其他常见数据库,就是sqlite数据库是存成文件的,可以直接把该文件从手机里导出来,以文件的形式存在,然后放到电脑上查看. Android操作数据库有如下步骤: 1.继承SQL ...
- Android的sqlite使用外部,Android 使用外部已经建立好的sqlite数据库
最近项目需要通过电话号码查询归属地,决定直接在本地sqlite的数据库进行查询,没必要去访问网络(虽然最后还是决定还是将数据库放在服务器上 ) 一 首先先将外部的sqlite数据库放入assets文件 ...
- android studio sqlitedatabase,在SQLite数据库Android Studio上使用预填充数据库
本问题已经有最佳答案,请猛点这里访问. 在这里,我想使用我预先填充的SQLite数据库到我的Android应用程序. 因此,首次运行时,它会自动从assets文件夹中复制数据库,并在我的Android ...
最新文章
- (001) java后台开发之流程初识
- 正则不等于一个字符串_更正一个观念:“积食”不等于“吃多了”
- springboot映射服务器目录,Spring boot文件路径映射配置代码实例
- Android判断当前线程是否是主线程的方法
- 为什么 SQL 正在击败 NoSQL,这对未来的数据意味着什么?
- apachemod_wsgidjango部署多个项目
- lisp如何调用linux头文件,Lisp之 程序的交互执行和非交互执行
- Objective-C 2.0 with Cocoa Foundation---对象的初始化以及实例变量的作用域(1)
- spark读写hive数据
- TG Pro for Mac(Mac电脑硬件温度监测工具)
- AOJ2025 Eight Princes
- Android下的默认字体详解
- destoon task.js.php,Destoon B2B网站系统在线聊天插件 v1.0
- Docker容器下安装ubantu,其中 command not found 的问题(已经解决)
- XP Professional开机就要激活,否则无法登录桌面
- Chrome浏览器怎么安装插件
- 【牛客】前端工程师-HTML专项练习知识点整理(一)
- aso优化重要ASO优化技巧大全,ASO标题优化技巧:实战案例解析
- 宝塔服务器环境好不好_Windows系统使用宝塔面板安装什么环境好
- Windows下 Cppcheck 的使用教程
热门文章
- 【基础机器学习算法原理与实现】使用感知器算法LDA、最小二乘法LSM、Fisher线性判别分析与KNN算法实现鸢尾花数据集的二分类问题
- H.266/VVC代码学习32:VTM5.0解码端最上层函数
- android如何绑定事件,Android_安卓为按钮控件绑定事件的五种方式
- Marlon's String zoj3587
- x200换屏_小黑本“清凉一夏” — Thinkpad X200 拆解清理
- 【云服务架构】大健康之互联网医疗解决方案
- 顽固的计算机老师,电脑运行很慢 四招教你清除电脑系统里的那些“顽固垃圾”...
- 天谕搬砖哪个服务器稳定,天谕手游搬砖玩什么职业好 搬砖强势职业推荐
- 干货 !玩转Linux中的输入输出管理(1)
- 使用Prometheus监控web站点及证书过期