Android sqlcipher 对于加密的Sqlite库在Mac上进行解密的正确姿势

前言:

说实话我平常对于工作中的一些所经历的问题很少记录成文,基本上都是一些学习笔记,这里打算备忘一篇,由于领导的要求,最近也刚好在大重构,需要对Android App中应用使用的db进行一个加密,由于之前木有搞过这块,度娘了一下需要采用三方的这个库:https://github.com/sqlcipher/sqlcipher,然后如果你项目中是用的Android自带的Sqlite,而非三方的像realm,greendao,其集成成本几乎为0,所以这里做一个备忘,简单记录一下~~

加密步骤:

对于加密这块其实网上一大堆说明,为了文章的完整性,我这实现的时候也是参考这位大佬的https://www.jianshu.com/p/e296a5b59559,简单列一下。

1、添加依赖:

    /* 数据库加密 */
    api "net.zetetic:android-database-sqlcipher:4.5.0"

2、整体将原生的sqlite包替换成sqlcipher的:

sqlcipher这位大神真的封装得太好了,完全按着Android原生的sqlite使用规则来封装的,所以接下来则将项目中你原生导的sqlite的包整体替换成sqlcipher的包既可,主要是对于原生sqlite的如下包:

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

整体替换成:

import net.sqlcipher.Cursor;
import net.sqlcipher.database.SQLiteDatabase;
import net.sqlcipher.database.SQLiteOpenHelper;

当然,这里列的不全,可能还会有其它的一些包,到时改完运行根据报错再相应的重新导下包既可。

3、修改获取写库时方式:

既然对数据库加密了,很明显是需要涉及到密钥对吧,对于sqlcipher而言,在获取写库时则需要传一个密钥,所以这块需要改一下,如下:

String key = "你的密钥";
sqlliteHelper.getWritableDatabase(key);

4、Application初始化一下sqlcipher:

由于这个库会使用一些so的小编,所以很明显需要将它加载进行进行jni的处理,所以需要在Application中调用一下它:

SQLiteDatabase.loadLibs(this);

5、加密之后用Navicat就无法打开了:

如果正常加密了,则将db导出来想用Navicat打开查看数据就变得不可能了,除非你知道密钥,打开会报:

而要想打开,此时就需要涉及到对数据库解密了,下面既可对它进行说明。

解密步骤【重点】:

说实话,这上解密我在网上搜了大半天才搞定,感觉如果时间久了到时绝对忘,所以这也是为啥产生此篇的原因,分享的同时,也是对自己备忘最好的一种方式,下面直奔主题。

思路:

很简单,就是将加密的db给解密成不加密的库呗,而sqlcipher官方本身就提供有解密库的支持。

办法:【针对mac平台】

由于我本身是在mac上开发,所以解密这个我只从mac的角度出发了,应该windows的步骤是差不多的,这里就不过多说明了。

1、先安装sqlcipher命令:

网上有其它的办法,比如下载官方的源码手动make,其对于mac来说最简单的就是用它:

brew install sqlcipher

如果安装不成功的自行解决,反正需要有这个命令才行,如果安装成功的话执行它会显示:

其实使用它就可以查看加密库中的数据了,只要设置对了密钥,比如:

但是!!!很明显对于一个商业应用的数据库这样来查看数据很不友好,一般都是想着把db导出来,然后使用专业的三方数据库工具来查看数据对吧,所以这也是接下来要解决的。

2、对加密的数据库进行解密:

接下来则可以使用这个命令对你导出经过sqlcipher加密过的db进行解密处理了,具体执行如下:

sqlcipher ./encrypt.db
SQLite version 3.34.1 2021-01-20 14:10:07 (SQLCipher 4.4.3 community)
Enter ".help" for usage hints.
sqlite> PRAGMA KEY='p123456@lonch';//这里设置加密的key
ok
sqlite> ATTACH DATABASE 'decrypt.db' AS decrypt KEY '';//注意key后面的为空代表解密出来的db不加密,如果你设置不为空,那等于没解密哟
sqlite> SELECT sqlcipher_export ('decrypt');//将数据导到不加密的库中
sqlite> DETACH DATABASE decrypt;
sqlite> .q

这块没啥好说的,试一下就知道了,反正我的是解密成功了:

3、愉快的使用Navicat来查看库数据:

这就不用多说了,也是解密的最终目的。

原文地址:https://www.cnblogs.com/webor2006/p/16636193.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


现在给大家介绍一下如何查询MAC的生产日期,希望对你查询MAC的生产日期操作有所帮助。
1、点击【编辑虚拟机设置】,转到【CD/DVD (SATA)】,选中【使用 ISO 映像文件】复选框,点击【浏览】,找到已经准备好的 MacOS Ventura 镜像;4、客户机操作系统下,选择【Apple Mac OS X】,版本选择大家需要的【macOS版本】,再点击【下一步】;7、完成【抹掉】后,左上角关闭该窗口,返回上一界面,选择【Install macOS】,正式进入苹果系统安装流程;1、打开 Vmware Workstation,然后点击左上角的【文件】,打开的下拉项中,选择【新建虚拟机】;
注意:用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本。一般情况 pip 对应的是 Python 2.7,pip3 对应的是 Python 3.x。pip介绍:pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。1.打开后输入python3确定电脑上是否已安装python3,如果输入python是查看mac上的自带版本。如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。如下图是已经成功安装pip的状态。
Mac 安装nvm
Mac(M1)安装VMware虚拟机及Linux系统
Mac 如何安装 Telnet,mac安装telnet命令
是不是对键盘输入厌烦了?那你可以试试语音输入。 你可以按照下面的步骤打开Mac的语音输入功能。 以 macOS Catalina 为例: Step 1. 点击屏幕左上角的图标,点击【系统偏好设置】。
1.clean my Mac x 2.Cleaner One Pro 3.App Cleaner
按caps lock键。 CapsLock键,短按切换中英文,长按切换大小写。
windows: 1.PowerToys 2.不用软件进行分屏 Windows 10技巧1:窗口1/4分屏 - Acer Community 介绍说明 从Win7时代开始,微软便引入了屏幕热区概念,即
https://zhuanlan.zhihu.com/p/111111684 下载地址: https://www.smoothscroll.net/mac/
https://support.apple.com/zh-cn/guide/imac/apd2e7352054/mac 浏览:24 英寸 iMac 24 英寸 iMac 比以往更个
在Mac自带的中文输入法中,“反斜杠”键(“\”)就是顿号。
1.系统偏好设置。 2和3步如下图: 注意:在设置后,启用capslock大写的时候,需要长按capslock键。
Typora是一款轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别。即时渲染使得你写Markdown就想是写Word文档一样流畅自如,不像其他编辑器的有编辑栏和显示栏。简洁美观实时预览扩展语法跨平台免费Typora现在收费,但你仍然可以在官方网站上找到历史版本。虽然新版本仍然值得收费,但免费版本仍然可以使用。httpshttpshttpshttpshttpshttpshttpshttps。......
Mac M1安装Centos7
连接为官方下载链接, 直接复制MD5可迅雷下载亲测可用, 和付费版使用体验无差别.1. Windows 64bithttps://download.typora.io/windows/typora-setup-x64-0.11.18.exeMD5:12F96372BEE2951ACF5627EA28F8A389**2. Window 32bit **https://download.typora.io/windows/typora-setup-ia32-0.11.18.exeMD5:F5036
ubuntu22.04 、系统安装、win双系统、Ubuntu分区、Ubuntu优化、美化gnome tweaks,扩展、macos、搜狗输入法、wps字体、微信安装、navicat15、java开发环境搭建、idea 输入法问题处理、双系统问题、github慢等等。史上最全保姆级Ubuntu使用教程
MAC怎么获取文件路径 MAC获取文件路径的四种方法