Android中对sqlite加密--SQLCipher
android中有些时候会将一些隐私数据存放在sqlite数据库中,在root过的手机中通过RE就能够轻松的打开并查看数据库所有内容,所以对隐私数据的保护就有两个方法:①将隐私数据自行加密后存入数据库,别人即使打开查看也不知道是什么数据;②将整个数据库进行加密,别人根本就打不开。对于一个数据库中所有数据都需要加密的情况,直接对数据库进行加密是很好的一个解决方案。
SQLCipher提供两个版本,一个收费版,一个免费版。收费和免费的功能没多大差别,只是收费的集成更简单方便~这里用免费版进行举例:
1、下载 sqlcipher-for-android-community-v3.2.0.zip
2、在android studio中新建 assets 文件夹,将下载的文件中assets文件夹中的icudt46l.zip文件拷贝到此处:
3、在 mian 目录下新建jniLibs文件夹,并将下载文件中libs文件夹中对应不同平台so文件的文件夹拷贝到此文件夹下;
4、将libs下的sqlcipher.jar文件拷贝到 项目的 libs 文件夹下(工程视图切换成project视图);
5、将 sqlcipher.jar “add as library”
6、建立 mySqliteOpenHelper 类,继承自导入jar包的 net.sqlcipher.database.SQLiteOpenHelper 类。
import android.content.Context; import net.sqlcipher.database.SQLiteDatabase; import net.sqlcipher.database.SQLiteOpenHelper; public class mySqliteOpenHelper extends SQLiteOpenHelper { public mySqliteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL("create table Book(" + "_id integer primary key autoincrement," + "name text," + "price integer)"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) { } }在操作数据库的类中如下操作:
...... SQLiteDatabase.loadLibs(this);//一定不要忘记这句~~ mySqliteOpenHelper helper = new mySqliteOpenHelper(this, "book.db", null, 1); //此处指定打开数据库需要的password db = helper.getWritableDatabase("pwd"); db.delete("Book",null,null);//清空数据库
...... ContentValues values = new ContentValues(); values.put("name", "JAVA编程思想"); values.put("price", 330); db.insert("Book", null, values); Cursor cursor = db.query("Book", null, null, null, null, null, null); while (cursor.moveToNext()){ System.out.println("name:"+cursor.getString(cursor.getColumnIndex("name"))); System.out.println("price:"+cursor.getString(cursor.getColumnIndex("price"))); } cursor.close();
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android指纹识别
原文: Android指纹识别 上一篇讲了通过FingerprintManager验证手机是否支持指纹识别,以及是否录入了指纹,这里进行指纹的验证. //获取FingerprintManager实例 FingerprintManager mFingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE); //执行验证监听 mFingerprintManager .authenticate(cryptoObject, mCancellationSignal, 0, this, null); 参数说明: cryptoObject//FingerprintManager支持的加密对象的包装类。目前该框架支持Signature,Cipher和Mac对象。 mCancellationSignal//提供取消正在进行的操作的功能。 callback(参数中的this)//指纹识别的回调函数 cryptoObject初始化: private KeyguardManager ...
- 下一篇
Unity 之MOB ShareSDK流程详解
最近公司的应用要发布到其他的Android平台,所以Share SDK 的一些参数需要重新配置,借此机会笔者整理下Share SDK相关设置的流程,以下示例Android平台微信分享为参考 有错误或者不准确的地方欢迎大家留言指正 2018.06.09更新 不支持异步回调,在异步中进行回调会出现错误。 首先去MOB官网注册相关账号 登录就会来到对应的管理控制台 然后添加应用,把需要进行分享的应用先关设置添加进去 这样我们就得到了这个应用在MOB平台的APP ID和 App Secret 点击Share SDK 选中社会化平台分享 会看到许多可以分享的平台 如果应用过多点击小三角可以弹出其他应用的下拉列表 这里有一个是否开启回流短链的设置,打开了这个转短链的话,我们会帮您统计回流数,就是说您分享链接了,会统计多少人点击这个链接数 点击需要分享平台的齿轮按钮 进入后会要求输入APP ID和APP Secret 但是这个APP ID和APP Secret并不是我们一开始得到的在MOB平台对应的序列号,那我们从哪里获取呢?这需要我们去微信开放平台获取 也是老套路,注册对应的账号 这个还需要验证一...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路