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

首頁 > 系統 > iOS > 正文

ios開發FMDB導入SQLCipher加密數據庫

2019-11-09 17:19:31
字體:
來源:轉載
供稿:網友
ios開發FMDB導入SQLCipher加密數據庫

工程用得FMDB做數據庫的操作,后期要對數據庫做加密,這里有兩種方法:

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

2.直接對數據庫文件加密。

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

百度后,決定用SQLCipher,而且FMDB是支持SQLCipher的,官方配置說明地址 http://sqlcipher.net/ios-tutorial/ ,然后嘗試,配置失敗,而且使app包加大了很多兆,所以

不推薦。

后來在FMDB官方發現了這個:

/

<喎?"/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ICAgICAgvLS/ydLU08Njb2NvYXBvZHPAtLCy17DWp7PWU1FMQ2lwaGVyvNPD3Mr9vt2/4rXERk1EQrD8o6zI57n7xPRDu9PDuf1jb2NvYXBvZHOwstewuf212sj9t72/qtS0v+KjrNXiwO/Nxrz20ru49r3Ms8yjrLrcz+o8L3A+Cjxwps+4o7podHRwOi8vY29kZTRhcHAuY29tL2FydGljbGUvY29jb2Fwb2RzLWluc3RhbGwtdXNhZ2U8L3A+CjxwPiAgICAgILW91eLA787Sw8fL+df2tcS+zcrH0QQw0SBGTURCL1NRTENpcGhlciAg08Njb2NvYXBvZHMgsLLXsLW919S8urXEuaSzzMDvoaM8L3A+CjxwPiAgICAgILzytaXX9reovs3Kx6OovdPPwsC0tcSyvdbotcTHsMzhysfE47XEtefE1MnPsLLXsMHLY29jb2Fwb2Rzo6zH687xsdiwtNXVyc/D5sG0vdO1xL3Ms8zF5NbDusOjrLfx1PLPwsPmsr3W6Lvhyqew3KOpo7o8L3A+CjxwPiAgICAgIDEu1NrE+tfUvLq1xLmks8zEv8K8z8LQwr2o0ru49s7EvP5Qb2RmaWxlo6y08r+q1tW2yyAgIMrkyOvD/MHu0NAgICQgdmkgUG9kZmlsZSAgLCDIu7rz0LTI6yAgIHBvZCChrkZNREIvU1FMQ2lwaGVyIKGvo6wgyLu687GjtObNy7P2PC9wPgo8cD4gICAgICAyLsP8we7Q0NaxvdMgyuTI6yAgJHBvZCB1cGRhdGUgLjwvcD4KPHA+ICAgICAgyLu687XItP3WsbW9s/bP1qO6PC9wPgo8cD4gICAgICA8L3A+CjxwcmUgY2xhc3M9"brush:java;">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 查看的時候,是看不見任何表的,入下圖:

/

但事實上,這個數據庫是有表有內容的,%20這樣就防止了我們數據庫的數據外泄。

接下來是另一個重點:

用cocoapods安裝后,其實是往我們的工程里添加了另外一個工程Pods,個人感覺很不爽,于是決定,把它融合到我的工程里。

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

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

開始:

仔細看用cocoapods%20安裝后的工程結構:

其實和我們平常用得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了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蒙山县| 吉林市| 枞阳县| 建湖县| 江口县| 忻城县| 云浮市| 驻马店市| 于都县| 屯门区| 长治县| 栖霞市| 淳安县| 巴林左旗| 昭平县| 连平县| 云南省| 安塞县| 蕉岭县| 寿阳县| 塔城市| 阿合奇县| 西平县| 威信县| 密云县| 衡山县| 达州市| 襄汾县| 太康县| 登封市| 栾城县| 峡江县| 湖州市| 五家渠市| 遂宁市| 仙游县| 开阳县| 景谷| 双辽市| 五指山市| 弥渡县|