文章目录
- 一、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
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;