正确使用sqlcipher for Android
android-database-sqlcipher是基于SQLCipher的数据库加密框架,支持android4到android9,经常用来对android的SqlLite进行加密,现在支持Gradle集成,如果要支持androidx,可以使用Room框架,也可以配合原声的SQLiteOpenHelper使用。
首先在你的build.gradle中添加依赖:
implementation 'net.zetetic:android-database-sqlcipher:4.2.0'
如果要兼容androidx请参考github页的配合Room框架使用的方案。
这里介绍怎么和原生API配合使用:
1、将所有android.database.sqlite.*的引入全部更改为net.sqlcipher.database.*,例如android.database.sqlite.SQLiteDatabase改为 net.sqlcipher.database.SQLiteDatabase;
2、在你的application的oncreate方法里面调用SQLiteDatabase.loadLibs();传入application的上下文作为参数;
3、在你获取数据库对象的时候,使用SQLiteDatabase.g() ,传入密码,支持String,byte[],char[] 作为密码;
这里有一个guide页作为使用简介https://www.zetetic.net/sqlcipher/sqlcipher-for-android/
下面说一说使用过程中可能出现的问题
SQLiteDatabase mSQLiteDatabase = helper.getWritableDatabase(GlobalConst.DB_PASSWORD);
虽然guide页是在onCreate里创建的数据库对象,但是实测执行这段代码耗时非常严重,通常情况下为0.8s-1.5s左右,不像使用原生的速度很快不会卡顿,因此建议维系一个全局的单例句柄,可以在应用启动加载页异步加载数据库对象设置为Application全局变量使用或者在每次需要获取db对象的时候都使用异步操作,如果你使用单例模式,要保证每次同时操作数据库的db对象不再同一个线程,因此全部数据操作建议都用异步操作。
- 密码是对的但是打不开数据,如果你有使用多个类似个继承自DBHelper的对象,加密密钥是一样的也是不能操作的,要么合并这些类,要么把数据库分开
正确使用sqlcipher for Android的更多相关文章
- [转]正确使用SQLCipher来加密Android数据库 - 朝野布告
参考文档:http://www.tuicool.com/articles/eYNFbuA Android本身自带有不加密的数据库SQLite,如果要保存密码之类的敏感数据在本地的话方法一是使用字段加密 ...
- 正确使用SQLCipher来加密Android数据库
Android本身自带有不加密的数据库SQLite,如果要保存密码之类的敏感数据在本地的话方法一是使用字段加密解密算法,方法二是整个数据库都加密掉.如果只是加密解密某个字段(如password)就推荐 ...
- sqlcipher for android
github 地址 https://github.com/sqlcipher/android-database-sqlcipher 官网教程 https://www.zetetic.net/sqlci ...
- 【腾讯Bugly干货分享】Android ImageView 正确使用姿势
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5832602d7196970d65901d76 导语 本文主要介绍了ImageV ...
- Android数据库安全解决方案,使用SQLCipher进行加解密
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11952409 我们都知道,Android系统内置了SQLite数据库,并且提供了一 ...
- Android数据库安全解决方案,使用SQLCipher
源码:http://files.cnblogs.com/android100/SQLCipherTest.rar 我们都知道,Android系统内置了SQLite数据库,并且提供了一整套的API用于对 ...
- Android中对sqlite加密--SQLCipher
原文:Android中对sqlite加密--SQLCipher android中有些时候会将一些隐私数据存放在sqlite数据库中,在root过的手机中通过RE就能够轻松的打开并查看数据库所有内容,所 ...
- 2021年正确的Android逆向开发学习之路
2021年正确的Android逆向开发学习之路 说明 文章首发于HURUWO的博客小站,本平台做同步备份发布.如有浏览或访问异常或者相关疑问可前往原博客下评论浏览. 原文链接 2021年正确的Andr ...
- <Android 开源库> GreenDAO 使用方法具体解释<译文>
简单介绍 greenDAO是一个开源的Android ORM,使SQLite数据库的开发再次变得有趣. 它减轻了开发者处理底层的数据库需求,同一时候节省开发时间. SQLite是一个非常不错的关系型数 ...
随机推荐
- 教你用Python制作微信好友背景墙
目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...
- WinForm控件之【Button】
基本介绍 普通按钮大部分情况下用作页面对某系列操作后的提交确认,应用较为广泛,在winfrom控件当中使用设置都相对的简单. 常设置属性.事件 Image:控件上显示的图片: Enabled :指示 ...
- python包-logging-hashlib-openpyxl模块-深浅拷贝-04
包 包: # 包是一系列模块文件的结合体,表现形式是文件夹,该文件夹内部通常会包含一个__init__.py文件,本质上还是一个模块 包呢,就是前两篇博客中提到的,模块的四种表现形式中的第三种 # 把 ...
- FAIRR
FAIRR 在进行一项工作时需要注意学习.应用和改进已有信息和成果,可参考FAIRR原则: Find existing info and result, Add to and Improve it, ...
- 201803-1跳一跳 CCF (C语言)
问题描述 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱. 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束. 如果跳到了方块上,但没有跳到方块的中心则 ...
- webstorm mac 版破解
一.打开终端,输入: sudo vim /etc/hosts 回车后输入密码,编辑 hosts 文件,如图: 二.进入编辑模式(按 i 键),在最后一行添加如下代码: 0.0.0.0 account. ...
- 如何阅读zstack源码
个人的gitbook将会持续更新 https://www.gitbook.com/book/jingtyu/how-to-learn-zstack-code
- CentOS7 部署K8S集群
虚拟机: VMware® Workstation 12 Pro 12.5.9 build-7535481操作系统:CentOS Linux release 7.6.1810 (Core) 部署 ...
- codeforces 213div(2) 365 A.Good Number 365 B.The Fibonacci Segment
#include <stdio.h> #include <string.h> bool vis[11]; int n, k; bool judge(int x) { memse ...
- poj 2503 Babelfish(字典树或map或哈希或排序二分)
输入若干组对应关系,然后输入应该单词,输出对应的单词,如果没有对应的输出eh 此题的做法非常多,很多人用了字典树,还有有用hash的,也有用了排序加二分的(感觉这种方法时间效率最差了),这里我参考了M ...