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

首頁 > 系統(tǒng) > iOS > 正文

ios開發(fā)FMDB導入SQLCipher加密數(shù)據(jù)庫

2019-11-09 16:14:04
字體:
來源:轉載
供稿:網友
ios開發(fā)FMDB導入SQLCipher加密數(shù)據(jù)庫

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

1.對數(shù)據(jù)庫內容加密,存的時候加密,用得時候解密。

2.直接對數(shù)據(jù)庫文件加密。

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

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

不推薦。

后來在FMDB官方發(fā)現(xiàn)了這個:

/

<喎?"/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`.

類似這樣的提示出現(xiàn),標示安裝成功,然后目錄會變成類似這個樣子:

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

之后添加加密代碼:

/

我是直接在FMDatabase.m里加的,這個看個人代碼需要加的地方加就ok,一般是在數(shù)據(jù)庫open之后就用這個 setKey 方法。

然后編譯,運行,不出意外是OK得,用第三方數(shù)據(jù)庫管理工具驗證是否加密,當導入加了密的數(shù)據(jù)庫的時候,會直接提示 ‘數(shù)據(jù)是加密的’ 類似的話,如果用命令行的sqlite3 打開的話,是可以打開的,但是當用 .table 查看的時候,是看不見任何表的,入下圖:

/

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

接下來是另一個重點:

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

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

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

開始:

仔細看用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工程和主工程的一些配置統(tǒng)一的,所以在移掉cocoapods安裝的形式后,就不用管這些了。

其實簡單步驟就是:

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

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

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

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

然后FMDatabase 的 setkey 方法就可以用了,在打開數(shù)據(jù)庫后,調用此方法,數(shù)據(jù)庫文件就加密ok了。


上一篇:iOS證書錯誤

下一篇:iOS 圖片壓縮方法

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 岑巩县| 关岭| 北宁市| 景德镇市| 榆中县| 绍兴县| 沧州市| 永宁县| 湖口县| 汉寿县| 留坝县| 太谷县| 武乡县| 巴彦淖尔市| 商城县| 南雄市| 周至县| 广宁县| 富蕴县| 新宾| 龙山县| 饶阳县| 龙陵县| 疏附县| 达拉特旗| 巴楚县| 漾濞| 伊通| 工布江达县| 海兴县| 平利县| 平阳县| 通许县| 彭山县| 肥西县| 安图县| 铜梁县| 萝北县| 杭锦后旗| 镇安县| 故城县|