上面使用SQLiteCipher创建数据库和表,以及向表中插入数据,查询表中的数据,除了创建数据库获取可读写数据库对象和原生SQLite API有些区别一样,其他执行SQL语句,查询表中数据的API 和原生 SQlite API是完全一样的;
SQLiteCipher结合Room框架使用
我们知道在使用SQLite数据库的时候,我们往往会使用一些比较方便的ORM(对象关系映射)框架来帮助我们操作数据库,如GreenDAO,Room(Jetpack组件)等,那如何将SQLiteCipher结合这些ORM框架使用;我们这里介绍一下Google Jetpack组件中的ORM框架 Room结合SQLiteCipher使用;
其实Room结合SQLiteCipher使用,就是在创建数据库时候,需要先创建一个SupportFactory
,SupportFactory中会传入通过SQLiteCipher中的SQLiteDatabase获取的密码字节数据
SQLiteDatabase.loadLibs(this) val passphrase = SQLiteDatabase.getBytes("test123".toCharArray()) val factory = SupportFactory(passphrase, object : SQLiteDatabaseHook { override fun preKey(database: SQLiteDatabase?) { LogUtil.e(TAG, "preKey") } override fun postKey(database: SQLiteDatabase?) { LogUtil.e(TAG, "postKey") } }, true)
然后在创建数据库的时候,通过Room自带的openHelperFactory()方法传入创建的SupportFactory即可,这样就能创建加密数据库了;其他操作,就按照Room正常的操作即可
var mInstance= Room .databaseBuilder( context.applicationContext, AppDatabase::class.java, DB_NAME ).addCallback(object : RoomDatabase.Callback() { override fun onCreate(db: SupportSQLiteDatabase) { super.onCreate(db) Log.e(TAG, "onCreate: ") initMusicTypeData(context, db) } }).openHelperFactory(factory) .build()
查看并导出加密数据库文件
-导出数据库文件
我们手机通过USB连接电脑之后,打开开发者模式,然后在Android Studio菜单栏中的View->
Tool Windows->Device File Explorer
然后在Device File Explorer中进入 data/data/应用包名/databases中找到我们创建的数据库文件demo.db,然后我们可以右键改文件Save As 导出该数据库文件
-查看加密数据库文件
前面我们已经提到过,可以通过DB Browser for SQLite来查看加密的数据库文件
下载地址:https://sqlitebrowser.org/dl/
下载安装之后,我们打开安装目录下的DB Browser for SQLCipher.exe程序,然后通过菜单栏中的文件->打开数据库->打开导出的加密数据库文件,然后输入数据库文件的加密密码,就是我们在程序中SQLiteCipher加密数据库文件时使用的密码,输入正确密码后,可以正常打开数据库文件
右键表名,选择浏览数据,即可查看表中的数据
到此这篇关于Android SQLite数据库加密的操作方法的文章就介绍到这了,更多相关Android SQLite数据库加密内容请搜索
标签:SQLite
相关阅读 >>
c#中实现在32位、64位系统下自动切换不同的Sqlite dll文件
android通过jxl读excel存入Sqlite3数据库
asp.net下Sqlite(轻量级最佳数据库) 原理分析和开发应用
更多相关阅读请进入《Sqlite》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。