国产探花免费观看_亚洲丰满少妇自慰呻吟_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>

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

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石阡县| 泸水县| 建阳市| 云浮市| 定陶县| 武清区| 浏阳市| 剑阁县| 公安县| 陇川县| 左云县| 应用必备| 涞源县| 延寿县| 安顺市| 六枝特区| 江源县| 金华市| 云梦县| 南丰县| 眉山市| 河北区| 贵南县| 山阳县| 江永县| 霍山县| 庐江县| 丹东市| 苗栗县| 开封县| 肇源县| 克什克腾旗| 泌阳县| 兰西县| 花垣县| 剑阁县| 荣成市| 博罗县| 理塘县| 泾川县| 承德县|