国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

(iOS)sqlcipher和FMDB的使用總結(原創)

2019-11-14 20:44:06
字體:
來源:轉載
供稿:網友

寫這篇文章的原因是之前接觸到了關于sqlite數據庫加密的問題,一般數據庫加密,無非是數據加密和數據庫文件加密,當然數據庫文件加密對手機效率可能更高一些。

下面就講一下,自己對sqlcipher和fmdb的使用心得。


1.Sqlcipher是一個很有名的庫,它的主要作用是對sqlite數據庫操作,其中一個很重要的就是加密、解密處理。它支持ios、android、wp8、mac os等, 它連接:http://sqlcipher.net。

  配置sqlcipher庫

  關于Sqlcipher在ios工程的配置過程,推薦一篇blog(http://blog.csdn.net/kuai0705/article/details/8931996),我是照著他的配置的,我就不粘貼了。當然官網也有配置過程。不過我按照官網的配置,沒有成功,官網寫的比較簡單,初學者可能會遺漏東西,比如openssl。

  使用sqlcipher庫

  sqlcipher提供了sqlite數據庫各種操作方法。這里說幾個注意的地方,sqlcipher的加/解密方法sqlite3_key在它的實現文件sqlite3.c(吐槽一下,一個文件寫了14萬+行代碼...)中加了#ifdef指令(不止這一處),所以要想加/解密成功,在你調用sqlite3_key等類似方法的文件中加上相關的#define。上面的配置中有一項other c flag的配置(-DSQLITE...),在我這好像不起作用,所以我直接在文件中加的。

  下面對sqlcipher的幾個基本方法進行解釋:

  sqlite3_open,是指打開數據庫,如果數據庫不存在,就會創建這個數據庫(前提要存在這個路徑)。

  sqlite3_key,是指對打開的數據庫進行加密(新的數據庫)或者解密(需要解密的數據庫),在數據庫關閉之前,這個方法只能使用一次。

  sqlite3_rekey,是指對加密的數據庫進行更改密碼,它的使用前提是進行了sqlite3_key方法并且成功了,rekey方法的使用不限制次數。

  sqlite3_exec,是對數據庫操作方法。


 

2.FMDB是對sqlite數據庫操作封裝的很不錯的數據庫,而且它也增加了對sqlcipher的支持,也就是說,我們不直接用sqlcihper也能完成加解密操作,而且FMDB在操作sqlite方面方便得多。

  配置FMDB庫

  關于FMDB的配置過程,推薦一篇博文(http://blog.devtang.com/blog/2012/04/22/use-fmdb),他寫好了關于fmdb的配置和簡單實用。

  使用FMDB

  在使用方面,如果要實現fmdb加解密效果,你的工程也要配置好sqlcihper,關于FMDB的類和方法我就不說了,推薦的博文里面有。

  在這里有幾個注意點,關于FMResultSet,fmdb為他定義了迭代器功能,所以你想獲取result里面的值,要先執行[result next]。


  加密之后的數據庫文件,在別的數據庫管理軟件是不一定能打開的,即使你知道密碼,因為sqlcihper和你的數據庫管理軟件并不一定是用的是一套加解密機制?!?/p>

  有問題請留言,盡量回答。

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大石桥市| 金塔县| 鹤岗市| 建阳市| 恩平市| 舟山市| 营山县| 涟水县| 桓台县| 旬阳县| 青川县| 谷城县| 阳谷县| 云和县| 黄大仙区| 易门县| 视频| 大渡口区| 溧水县| 贵州省| 翁源县| 漠河县| 庆城县| 镇沅| 尤溪县| 永顺县| 平果县| 岚皋县| 峨边| 临城县| 龙江县| 纳雍县| 长兴县| 扎兰屯市| 泸溪县| 陇西县| 清河县| 定南县| 洛扎县| 龙陵县| 钟祥市|