原文:Android中对sqlite加密--SQLCipher

android中有些时候会将一些隐私数据存放在sqlite数据库中,在root过的手机中通过RE就能够轻松的打开并查看数据库所有内容,所以对隐私数据的保护就有两个方法:①将隐私数据自行加密后存入数据库,别人即使打开查看也不知道是什么数据;②将整个数据库进行加密,别人根本就打不开。对于一个数据库中所有数据都需要加密的情况,直接对数据库进行加密是很好的一个解决方案。

SQLCipher提供两个版本,一个收费版,一个免费版。收费和免费的功能没多大差别,只是收费的集成更简单方便~这里用免费版进行举例:

SQLCipher
For Android

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();

操作完成记得关连接~

Android中对sqlite加密--SQLCipher的更多相关文章

  1. Android中的SQLite使用学习

    Android中的SQLite使用学习 SQLite是非常流行的嵌入式关系型数据库,轻载, 速度快,而且是开源.在Android中,runtime提供SQLite,所以我们可以使用SQLite,而且是 ...

  2. Android中使用sqlite笔记

    1.实现SQLiteHelper来在android中使用SQLite.代码如下,来自android官网. public class FeedReaderDbHelper extends SQLiteO ...

  3. SQLite 加密 -- SQLCipher

    SQLite3 插件 github 下载地址 插件配置步骤地址 购买地址 其他加密方式介绍 SQLCipher API 地址 前言 应用使用 SQLite 来存储数据,很多时候需要对一部分的数据进行加 ...

  4. Android中数据库Sqlite的性能优化

    1.索引简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率.(1). 优点大大加快了数据库检索的速度,包括 ...

  5. android中与SQLite数据库相关的类

    为什么要在应用程序中使用数据库?数据库最主要的用途就是作为数据的存储容器,另外,由于可以很方便的将应用程序中的数据结构(比如C语言中的结构体)转化成数据库的表,这样我们就可以通过操作数据库来替代写一堆 ...

  6. android中滑动SQLite数据库分页加载

    今天用到了android中滑动SQlit数据库分页加载技术,写了个测试工程,将代码贴出来和大家交流一下: MainActivity package com.example.testscrollsqli ...

  7. android中的SQLite数据库

    SQLite是android中集成的一个轻量级的数据库,该数据库支持绝大部分SQL92语法 SQLiteDatabase代表一个数据库(底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQ ...

  8. Android中操作SQLite数据库

    我又回到了安卓的学习当中,忙来忙去终于忙的差不多有时间做自己的事情了,这感觉实在是太棒了!!本来想写android的控件以及他们的监视器的,但是我查了查android的手册,基本上都能查到,但是查有些 ...

  9. Android 中 非对称(RSA)加密和对称(AES)加密

    在非对称加密中使用的主要算法有:RSA.Elgamal.背包算法.Rabin.D-H.ECC(椭圆曲线加密算法)等. 优点: 非对称加密与对称加密相比,其安全性更好:对称加密的通信双方使用相同的秘钥, ...

随机推荐

  1. DYNAMIC CONTEXT SWITCHING BETWEEN ARCHITECTURALLY DISTINCT GRAPHICS PROCESSORS

    FIELD OF INVENTION This invention relates to computer graphics processing, and more specifically to ...

  2. SecureCRT连接虚拟机中的Linux

    如何使用SecureCRT连接虚拟机中的Linux https://jingyan.baidu.com/article/574c52191eb9996c8c9dc16a.html?st=5&n ...

  3. 解决eclipse 保存卡顿的问题

    开发十年,就只剩下这套Java开发体系了 >>>   eclipse 如果启动慢,还可以接收. 可是如果是 保存的时候卡顿, 有时候会 卡顿 3秒-5 秒的,感觉到写代码特别的不顺畅 ...

  4. 华为云软件开发云:容器DevOps,原来如此简单!

    当开发团队把代码提交到 Git 应用仓库的那一刻,他们心里在想什么? 祈祷没有bug?渴望回家补觉?产品经理Go Die? 对,也不对.因为这只是最终发布万里长征的一小步,接下来要面对测试环境.生产环 ...

  5. android打包SDK具体操作(包含第三方的jar一起打包)

    一.背景 因为最近编写的android项目,需要编写对应的SDK给别人使用,还好以前我都是拆成module写的,所以还不太费工夫,不过因为一些module里面包含第三方的jar,所以打包有点麻烦 二. ...

  6. 【44.19%】【codeforces 727C】Guess the Array

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  7. 使用UISegementControl实现简易Tomcat程序

    // // TomViewController.m #import "TomViewController.h" #import <AVFoundation/AVFoundat ...

  8. FreeBSD 内核中的SYSINIT分析【转】

    FreeBSD kernel是一个膨大的系统, 对于这样一个大系统, 里面往往包含了大量的子系统和  模块,当系统初始化时这些模块就需要初始化, 按照通常的思路,这些初始化过程必须在某处  被显式地调 ...

  9. Linux 下的任务管理 —— ps、top

    ps:report a snapshot of the current processes. ps 命令支持三种使用的语法格式 UNIX 风格,选项可以组合在一起,并且选项前必须有"-&qu ...

  10. vue 百度地图

    <template lang="pug"> #select-area-in-map-content #show-message-info el-popover(plac ...