【sqlite】运用SQLCipher加密数据库并压缩上传

多年来因为项目标需要,必要展开地面数据库的上传,呐,总不可能赤果果的不举行加密就上传啊,所以就钻研了下什么进展数据库的加密。谷歌(Google)可见加密的不二法门照旧蛮多的,那里运用的是免费的SQLCipher,至于收费的,咱就不考虑了~毕竟免费就足以完成的职能何要求掏银子呢对吗~(不过有几许要表明,免费的有点low,放在工程中望着专门刺眼,收费的死贵死贵,可是!你能够得到一个静态库,还有标准技术团队帮助,而且一旦一个静态库,根本毫无什么一堆配置,看起来也很舒畅女士);

废话不多说,直接讲进程,那里我想吐槽的是百度的诸多课程的撰稿人都是极端不负义务的,直接copy旁人的篇章,自己都不探望能照旧不能够兑现,唉~(童鞋们,
能用谷歌(Google)就用谷歌(Google)吧,敬重时间, 远离百度…)

一,利用Git举行clone得到sqlcipher文件夹,并拖拽到想要放置的门类目录下,不是直接拖到Xcode项目目录中(也能够间接clone到项目的根目录);

cd ~/Documents/xxxx/xxxx

git clone https://github.com/sqlcipher/sqlcipher.git

二,选中项目target,”Add Files to xxx”,
选中sqlcipher中的sqlcipher.xcodeproj;

官方文档:Check each target to which you want to add SQLCipher, and
leave “Copy items if needed” un-checked.意思是在增加的时候不要勾选
Copy items if needed 复选框;

不用勾选 Copy items if needed

三,关于OpenSSL.

OpenSSL is no longer required for building SQLCipher on iOS and OS X,
as the project by default uses Apple’s CommonCrypto framework for
hardware-accelerated encryption. You can stillbuild SQLCipher with
other crypto
providers
like
OpenSSL if you’d prefer, or you can write your own.

兴许在此之前加密的时候是亟需配备OpenSSL,可是现在我们的工程都默许使用了Apple自家的CommonCrypto库来拓展加密进度中得硬件加快,所以OpenSSL也就不要求了.

四,工程安插(关键步骤,不可以有偏差)

当选图中所示,依次在Target Dependencies中添加sqlcipher,在Link Binary
With Libraries中添加libsqlcipher.a**

上图①:

Target Dependencies中添加sqlcipher

图②:

Link Binary With Libraries中添加libsqlcipher.a**

注意:🔥*Hot Tip:Iflibsqlite3.dylibor another SQLite framework is
listed in your Link Binary With Libraries list be sure to remove it,
or you’ll see duplicate symbol errors.*

瞩目: 在Yutangk Binary With
Libraries中添加libsqlcipher.a时候,要确保没有添加任何的SQLite库,有的话,去掉;

五,参数配置(同样主要)

选中Build Settings,搜索框中输入Header Search
Paths,在搜出来的结果中,双击,点击添加,键入sqlite,./sqlcipher/src

上图③:

./sqlcipher/src

一连查找Other C Flags,在结果中添加-DSQLITE_HAS_CODEC

图④:

-DSQLITE_HAS_CODEC

六,开始化代码(这些看自己的要求而改变);

假若是率先次建立数据库,想要建立一个加密的数据库的话(或者要开辟一个用SQLCipher加密的数据库),那么就用如下的代码就好啊,比较简单;(唉,编辑器不可以插入代码,
然则对马克down又不是太熟谙,只可以截图啦…)

要在头文件导入sqlite哦

假使您的档次中早就存在了数据库,现在想要把数据库迁移加密一下(像自家这么的),那代码略微有些多.

证实很详细啦,就是将未加密的数据库数据导入新建的加密数据库

OK啦,到此地加密工作早就做得几近了,不过总感觉到就像是此直白输入一个加密的key怪怪的…不够高端啊,没提到,官网上又详尽的证实,告诉你可以用多么牛逼的措施加密你的数据库,可惜我从未商量…哈哈,有需求能够协调去看.

文档地址: https://www.zetetic.net/sqlcipher/ios-tutorial/

还未曾停止,大家题目中涉嫌了削减,这里自己也要说一下,因为内部有一个吭,害怕你们跳进去…

对待于加密,压缩要容易的多,那里运用的时开源的ZipArchive;各位自行github;

八个步骤:

  1. Add `Main.h` and `Main.m` to your project.

  2. Add the `minizip` folder to your project.

  3. Add the `libz` library to your target

成功之后您可以编译一下了~

啊喂,
赶紧停,否则你会被一推灰色报错吓住的,哈哈,其实那里是因为ZipArchive中带有了部分C文件,所以须要变更一下那些C文件的type

解决方案: 选拔所有.c文件,将性能的 identity and type 改为Objective-C
Source。

OK,完了,没有不当了~

上边附上自己的滑坡的代码供参考:

压缩

以及得到MD5的代码:

泪,13寸的Mac,不够截取整个方法…只好分两片段,我特意截取了代码行,哈哈

完啦~

对啊对啊,还有带进程的上传还从未说呢,那就在下一篇中加以吧~

自家原创, 转发请申明来源,谢谢~

网站地图xml地图