日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(iOS)sqlcipher和FMDB的使用总结(原创)

發布時間:2025/7/25 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (iOS)sqlcipher和FMDB的使用总结(原创) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫這篇文章的原因是之前接觸到了關于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#reply),我是照著他的配置的,我就不粘貼了。當然官網也有配置過程。不過我按照官網的配置,沒有成功,官網寫的比較簡單,初學者可能會遺漏東西,比如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和你的數據庫管理軟件并不一定是用的是一套加解密機制。 

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

?

?

轉載于:https://www.cnblogs.com/hikoming/p/3515009.html

總結

以上是生活随笔為你收集整理的(iOS)sqlcipher和FMDB的使用总结(原创)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。