一直使用sqlite来管理本地的数据,但是Xcode中的SDK中集成的sqlite是免费的,不提供加密模块,但是程序中用到的很多数据,有时候是不想让别人看到,一开始虑修改sqlite的源码,自己重新编译sqlite生成一个带加密模块的静态库,找了一下相关资料,需要修改源码中的makefile和自己实现加密算法等东西,折腾了一下,无果,就果断放弃了。此路不通,那就想别的办法来实现加密功能:现在找到3中方法来实现数据库加密的功能方法一、对sqlite中的数据进行加密:就是对数据库中插入的内容先进行aes、MD5等加密后在插入到数据库中,在使用时先从数据库中取出数据,然后在解密在使用这种方式好是好,但是有些致命的问题不能绕过,就是你如果要对某个字段进行模糊查询 *** 作,那么该字段就不能加密,否则的话你不能对该字段进行模糊查询 *** 作;这样一 来该字段还是要暴漏出来,别人还是能看到一些东西的方法二、对插入的数据进行简单的字符替换 :在插入数据之前,先将一些字符用特定的字符替换掉,在使用的时候在替换回来,对与全是字符集的字段这样 *** 作,也不会影响模糊查询 *** 作(查询之前先用特定字符将输入据替换,在用替换后的数据进行模糊查询,这样就不会有什么影响,同时你也可以用方法一对非查询字段进行加密;这种方法也有个致命的缺点,就是如果你查询的字段是中文的话,这个字符替换就是个大问题,不好解决。方法三、使用第三方库的开源库,实现对sqlite数据库的加密找来找去,sqlCipher这个开源框架不错,相关使用方法可以参考官方的文档,说的很详细,照着一步一步的做就可以了http://sqlcipher.net/ios-tutorial/ 官方的地址, 同时你可以参考一下这个blog http://blog.csdn.net/kuai0705/article/details/8931996,一些地方不是太详细,以官方文档为主如果在编译时提示:No architectures to compile for (ARCHS=armv6,armv7,VALID_ARCHS=armv7 armv7s则将在BulID Settings选项下面的Architectures和ValID Architectures里面都改成一样(例如:都填写 armv6 armv7),问题解决。 对于警告 :warning: implicit declaration of function 'sqlite3_key' is invalID in C99 只需要将BulID Settings选项下的C Language Dialect 改为:C89[-std-c89] 就可以,即使用c89标准总结
以上是内存溢出为你收集整理的sqlite 数据库加密(SQLCipher)全部内容,希望文章能够帮你解决sqlite 数据库加密(SQLCipher)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)