根據(jù)公司需求需要對數(shù)據(jù)庫加密豁鲤,公司使用FMDB
做的數(shù)據(jù)庫,上網(wǎng)查看了許多博客發(fā)現(xiàn)不少坑没宾,總結(jié)一下如何使用SQLCipher
侠讯。
Demo下載地址-本人寫的LKFMDB對FMDB
面向?qū)ο蠓庋b支持SQLCipher
加密,操作簡單完全面向?qū)ο蠓庋b把介。
在簡書地址
加密步驟
pod使用步驟
- 首先你的數(shù)據(jù)庫必須使用
FMDB
- 在github下載勤讽,你會(huì)在里面發(fā)現(xiàn)原來他是支持pod的,所以你可以直接
pod 'FMDB/SQLCipher' # FMDB with SQLCipher
- 然后就是
pod install
,如果被墻了就用pod install --verbose --no-repo-update
- 這樣的你的工程就有
SQLCipher
文件了 - 這樣數(shù)據(jù)庫還是沒有加密的因?yàn)槟J(rèn)是不加密的所以你必須在
FMDatabase.m
大約在150行和177行左右加上下面這幾句話
//不需要加密請注釋掉下面三行代碼
else{
[self setKey:DB_SECRETKEY];
}
DB_SECRETKEY
是宏也就是秘鑰
截圖說明
但是許多項(xiàng)目是不怎么使用pod的,所以需要直接拖入工程里面
有的項(xiàng)目原來就是有fmdb
工程文件的拗踢,但是不能加密地技,我的目的就是要把fmdb
搞成支持加密的,應(yīng)該很多人的工程都是要這個(gè)場景吧
- 準(zhǔn)備工作首先你的工程是有
FMDB
的秒拔,同時(shí)也有SQLCipher
的 - 我們把準(zhǔn)備好的
SQLCipher
文件下sqlite3.c
和sqlite3.h
拖入到需要加密的工程莫矗,這樣就OK了 - 重復(fù)上面的第5步
-
關(guān)鍵步驟來了 關(guān)鍵步驟來了 關(guān)鍵步驟來了
要在工程里設(shè)置兩個(gè)地方
-DSQLITE_HAS_CODEC
-DSQLITE_THREADSAFE
-DSQLCIPHER_CRYPTO_CC
-DSQLITE_TEMP_STORE=2
在這個(gè)地方需要注意網(wǎng)上的有博客是 Security -framework 這樣的順序但是編譯的時(shí)候會(huì)報(bào)錯(cuò)。
總結(jié)一下
其實(shí)簡單步驟就是:
1.在你有fmdb的工程里砂缩,加入sqlite3.h 和 sqlite3.m
2.在工程的build setting里修改兩個(gè)配置
一個(gè)是other c flags 作谚,如上面圖的那個(gè) other c flags
一個(gè)是 other link flags , 入上圖那個(gè)other lilnk flags
然后FMDatabase 的 setkey 方法就可以用了庵芭,在打開數(shù)據(jù)庫后妹懒,調(diào)用此方法,數(shù)據(jù)庫文件就加密ok了双吆。
你在打開數(shù)據(jù)庫會(huì)發(fā)現(xiàn)打開數(shù)據(jù)提示
日了狗了輸入秘鑰也打不開眨唬,然而就是這樣会前。問我為什么我也不知道,反正在程序工是可以用代碼操作讀取數(shù)據(jù)庫的匾竿。
最后是不是在使用FMDB
特別繁瑣要寫一堆SQL語句
Demo下載地址-githubLKFMDB本人對FMDB
面向?qū)ο蠓庋b支持SQLCipher
加密瓦宜,操作簡單完全面向?qū)ο蠓庋b。
在簡書地址