ios開發FMDB匯入SQLCipher加密資料庫

2021-06-28 20:26:32 字數 2556 閱讀 5889

**:

工程用得fmdb做資料庫的操作,後期要對資料庫做加密,這裡有兩種方法:

1.對資料庫內容加密,存的時候加密,用得時候解密。

2.直接對資料庫檔案加密。

這裡我選擇了第二種,原因不細說,自己決定。

不推薦。

後來在fmdb官方發現了這個:

即可以用cocoapods來安裝支援sqlcipher加密資料庫的fmdb包,如果您沒用過cocoapods安裝過第三方開源庫,這裡推薦乙個教程,很詳

到這裡我們所做的就是要把 fmdb/sqlcipher  用cocoapods 安裝到自己的工程裡。

1.在您自己的工程目錄下新建乙個檔案podfile,開啟終端   輸入命令列  $ vi podfile  , 然後寫入   pod 『fmdb/sqlcipher 』, 然後儲存退出

2.命令列直接 輸入  $pod update .

然後等待直到出現:

analyzing dependencies

downloading dependencies

installing fmdb (2.3)

generating pods project

integrating client project

[!] from now on use `sqlitehasccode.xcworkspace`.

類似這樣的提示出現,標示安裝成功,然後目錄會變成類似這個樣子:

之後進入工程都要點這個  .xcworkspace,進入後會是這個樣子:

之後新增加密**:

我是直接在fmdatabase.m裡加的,這個看個人**需要加的地方加就ok,一般是在資料庫open之後就用這個 setkey 方法。

然後編譯,執行,不出意外是ok得,用第三方資料庫管理工具驗證是否加密,當匯入加了密的資料庫的時候,會直接提示 『資料是加密的』 類似的話,如果用命令列的sqlite3 開啟的話,是可以開啟的,但是當用 .table 檢視的時候,是看不見任何表的,入下圖:

但事實上,這個資料庫是有表有內容的, 這樣就防止了我們資料庫的資料外洩。

接下來是另乙個重點:

用cocoapods安裝後,其實是往我們的工程裡新增了另外乙個工程pods,個人感覺很不爽,於是決定,把它融合到我的工程裡。

先看一下我移成功後的另乙個工程的結構(這個工程原來就是有fmdb工程檔案的,但是不能加密,我的目的就是要把fmdb搞成支援加密的,應該很多人的工程都是要這個場景吧):

不像是cocoapods 安裝的那樣,有兩個proj,從檔案上來說,只多了sqlite3.h 和 sqlite3.m,然後fmdb檔案還是你原來用得。這是我們最終要實現的樣子,好了,亂入完畢。

開始:仔細看用cocoapods 安裝後的工程結構:

其實和我們平常用得fmdb相比較,只是多了sqlcipher的這塊的支援,那麼我們只要想辦法,把這塊單獨移到我們之前已經有fmdb得工程裡就可以了

sqlcipher目錄下,有兩個子目錄,support files是配置檔案,common是主**檔案。

common下得兩個檔案,直接拖入到我們的工程即可,然後關鍵是這裡的配置:

1.pods-sqlcipher.xcconfig:

看到嘛,other_cflags 和 other_ldflags  分別對應工程裡build settings的:

other c flags :

這個主要是一些編譯巨集。

和other linker flags

-framework  和 security 是兩個,是分開的,別搞成乙個了。

按pods-sqlcipher.xcconfig 配置檔案裡的配置把這兩個地方改過來,如上圖.

2.pods-sqlcipher-private.xcconfig

這裡的配置其實沒什麼要改的

gcc_preprocessor_definitions 應該是設定編譯器的一些什麼,後面設為了cocoapods = 1, 我們就是為了去掉cocoapod的安裝形式的,所以我感覺這個配置我們不用理,所以我也沒有管。

header_search_paths ,不用配置,因為我們後來只加了sqlite3.h, 和sqlite3.m 在我們的工程目錄下,到時候只要包含 #import 「sqlite3.h」 就ok

other_cflags 和 other_ldflags 和pods_root 其實就是用得pods-sqlcipher.xcconfig裡的這幾個的設定,所以pods-sqlcipher.xcconfig設定好這裡也就好了。

因為用cocoapods安裝後,這裡的這些配置是要使sqlcipher工程和主工程的一些配置統一的,所以在移掉cocoapods安裝的形式後,就不用管這些了。

其實簡單步驟就是:

1.在你有fmdb的工程裡,加入sqlite3.h 和 sqlite3.m

2.在工程的build setting裡修改兩個配置

乙個是other c flags ,如上面圖的那個 other c flags

乙個是 other link flags , 入上圖那個other lilnk flags 

然後fmdatabase 的 setkey 方法就可以用了,在開啟資料庫後,呼叫此方法,資料庫檔案就加密ok了。

IOS開發 FMDB備忘

增 四種方式向資料表中插入資料 cpp view plain copy print?1 dbhelper sharedhelper db executeupdate insert into tb test username,values lizhongfu male 2 dbhelper share...

iOS開發 FMDB使用

demo位址 nslog path database fmdatabase alloc initwithpath path id欄位為自增欄位 name char 256位 age char 3位 char 2位 phone char 13位 address char 100位的 if databa...

iOS開發 FMDB的使用

獲取沙盒路徑 nsarray filepath nssearchpathfordirectoriesindomains nsdocumentdirectory,nsuserdomainmask,yes nsstring documentpath filepath objectatindex 0 ns...