加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite加解密

发布时间:2020-12-12 19:23:43 所属栏目:百科 来源:网络整理
导读:0x00 SQLite概述 SQLite是一个轻量级、跨平台的,开源的数据库引擎,它在读写效率,消耗总量、延迟时间和整体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方案。 然而免费版的SQLite有一个致命缺点:不支持加密。这就导致存储在SQLite中的数据可

0x00 SQLite概述


SQLite是一个轻量级、跨平台的,开源的数据库引擎,它在读写效率,消耗总量、延迟时间和整体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方案。

然而免费版的SQLite有一个致命缺点:不支持加密。这就导致存储在SQLite中的数据可以被任何人用任何文本编辑器查看到。



0x01 SQLite加密工具


SQLite Encryption Extension(SEE)

事实上SQLite有加解密接口,只是免费版本没有实现而已。而SQLite Encryption Extension(SEE) 是SQLite的加密版本,提供一下加密方式:

RC4

AES-128 in OFB mode

AES-128 in CCM mode

AES-256 in OFB mode

SQLite Encryption Extension(SEE)版本是收费的。


SQLiteEncrypt

使用AES加密,其原理是实现了开源免费版SQLite没有实现的加密相关接口。

SQLiteEncrypt是收费的。


SQLiteCrypt

使用256-bitAES加密,其原理和SQLiteEncrypt一样,都是实现了SQLite的加密相关接口。

SQLiteCrypt也是收费的。


SQLCipher

首先需要说明的是,SQLCipher是完全开源的,代码托管在github上。

SQLCipther使用256-bit AES加密,由于其基于免费版的SQLite,主要的加密接口和SQLite是相同的,但也增加了一些自己的接口,详情见这里。


SQLCipher分为收费版本和免费版本,官网介绍的区别为:

只是集成起来更简单,不用再添加openssl依赖库,而且编译速度更快,从功能来说没有任何区别。



0x03SQLite加密解密实现


这里介绍得非常详细。



0x04 SQLite DB文件解密实现


看上部分,加解密算法能了解到,DB会针对每一页进行加密或解密操作,每一页大小为4096,这大小都为512的倍数。我们以二进制方式去打开DB文件可以看到满足这个规律。那么这个规律可以帮助我们做什么事情呢,我们通过规律就会知道,db文件会全部映射到页去处理加解密,那么我们解密思路可以总结为:


0.读取文件内容。

1.找到生成解密的KEY。

2.找到解密函数,传入KEY以及读取的文件内容。

3.将解密函数返回的内容流读取出来即为解密内容。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读