天天看点

使用sqlcipher对sqlite数据库加密解密一、sqlite数据库加密二、更换数据库访问方式三、加密数据库解密

文章目录

  • 一、sqlite数据库加密
    • 1.环境配置
  • 二、更换数据库访问方式
    • 1.获取DB 数据操作对象
    • 2.修改构造方法
  • 三、加密数据库解密
    • 1.sqlcipher解密相关文件
    • 1.解密

一、sqlite数据库加密

目前只对新建的数据库进行。 暂不知道对已有数据库的加密。

1.环境配置

1.1 在Android Studio build.gradle 中引入相关的jar包

implementation 'net.zetetic:android-database-sqlcipher:3.4.0'
           

1.2 替换数据库访问方式和原生的sqlite包

import android.database.sqlite.SQLiteDatabase; (原数据库操作jar包)

替换成

import net.sqlcipher.database.SQLiteDatabase; (sqlcipher jar包)

二、更换数据库访问方式

1.获取DB 数据操作对象

2.修改构造方法

继承 SQLiteOpenHelper 的类的构造方法修改为下面这个

public IndexSQLiteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        //不可忽略的 进行so库加载
        SQLiteDatabase.loadLibs(context);
 }
           

到了这已经加密成功。

三、加密数据库解密

1.sqlcipher解密相关文件

百度网盘下载

提取码: 9vz2

使用sqlcipher对sqlite数据库加密解密一、sqlite数据库加密二、更换数据库访问方式三、加密数据库解密

1.解密

//定位到bin目录

D:\> cd \sqlcipher\bin
           

//使用sqlcipher-shell64.exe 打开加密数据库

D:\sqlcipher\bin> ./sqlcipher-shell64.exe afinal.db;
           

// 输入数据库密码

sqlite> PRAGMA key = 'xinyu';
           

// 将加密数据库的数据备份到新数据库

sqlite> ATTACH DATABASE 'plaintext.db' AS plaintext KEY '';
sqlite> SELECT sqlcipher_export('plaintext');
           

//关闭数据库

sqlite> DETACH DATABASE plaintext;