使用SQLCipher加密SQLite數(shù)據(jù)庫

在iOS應(yīng)用程序開發(fā)中經(jīng)常需要使用SQLite來存儲數(shù)據(jù)尸曼,很多時候需要加密保存一部分的數(shù)據(jù)八回。常見的做法是將要存儲的內(nèi)容先加密然后存到數(shù)據(jù)庫中,使用的時候?qū)?shù)據(jù)進行解密吩坝,這樣就會有大量的性能消耗在數(shù)據(jù)的加解密上(性能主要取決于加解密的算法和CPU的能力)毒姨。
SQLCipher is an open source extension to SQLite that provides transparent 256-bit AES encryption of database files.

SQLite本身是支持加密功能的(免費版本不提供加密功能,商業(yè)版本是支持加密模塊)钉寝。SQLCipher是一個開源的SQLite加密擴展弧呐,支持對db文件進行256位的AES加密闸迷。
集成SQLCipher
集成SQLCipher有有兩種方法一種是按照官方的方式一步步的執(zhí)行,這里就不過多的介紹俘枫。配置過程很麻煩腥沽,推薦使用下面的方式集成。
1鸠蚪、獲取SQLite加密模塊(SQLCipher)
在終端(Terminal)中使用pod search FMDB
今阳,在查詢的結(jié)果中可以看到有個FMDB/SQLCipher
的Sub spec。

sqlcipher-search-fmdb.png

如果使用FMDB和CocoaPods的話直接在你的Podfile中添加pod 'FMDB/SQLCipher'

sqlcipher-podfile.png

如果沒有使用CocoaPods的話建議還是安裝一個吧茅信,或者是新建一個測試項目安裝FMDB和SQLCipher盾舌。安裝CocoaPods可以參考《使用CocoaPods管理iOS項目中的依賴庫》
2、導(dǎo)入SQLCipher
執(zhí)行pod install
之后會自動獲取SQLCipher汹押,其實SQLCipher只有兩個文件sqlite3.h
和sqlite3.m
矿筝。
拷貝sqlite3.h/sqlite3.m文件到項目中,如果使用CocoaPods方式獲取SQLCipher的話棚贾,這一步驟就不需要了窖维。
3、配置Xcode設(shè)置項
通過查詢資料SQLite是否開啟加密模塊是通過宏(SQLITE_HAS_CODEC
)來配置的妙痹。那么就需要在Xcode中配置開啟SQLite加密組件的宏(如使用CocoaPods方式則不需要配置)铸史。
sqlite-extension-marco.png

(1)target -> Build Setting -> Other C Flags添加-DSQLITE_HAS_CODEC、-DSQLITE_TEMP_STORE=2怯伊、-DSQLITE_THREADSAFE琳轿、-DSQLCIPHER_CRYPTO_CC幾項配置
(2)target -> Build Setting -> Other Linker Flags添加-framework Security配置
4、如何使用
(1)引入sqlite3加密模塊耿芹,然后在打開數(shù)據(jù)庫之后加入如下代碼
const char *key = [@"devzeng" UTF8String];sqlite3_key(_db, key, (int)strlen(key));

如下圖:

sqlcipher-sqlite3-open.png

說明:
1)如果沒有添加-DSQLITE_HAS_CODEC配置上面的代碼會報錯
2)sqlite3_key函數(shù)需要指定加密使用的key崭篡,推薦使用UUID(可以進行salt處理)并存儲到KeyChain中。
3)如使用FMDB吧秕,可以在FMDB的open方法之后添加上面的兩行代碼琉闪。
(2)使用了加密模塊在提交到App Store時需要指明,具體的操作方法可以參考StackOverflow上面的做法砸彬。Does my application “contain encryption”?
參考資料
1颠毙、《Adding SQLCipher to Xcode Projects》
2、《ios開發(fā)FMDB導(dǎo)入SQLCipher加密數(shù)據(jù)庫》
3砂碉、《SQLite數(shù)據(jù)庫加密研究》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛀蜜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子增蹭,更是在濱河造成了極大的恐慌滴某,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異壮池,居然都是意外死亡偏瓤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門椰憋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厅克,“玉大人,你說我怎么就攤上這事橙依≈ぶ郏” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵窗骑,是天一觀的道長女责。 經(jīng)常有香客問我,道長创译,這世上最難降的妖魔是什么抵知? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮软族,結(jié)果婚禮上刷喜,老公的妹妹穿的比我還像新娘。我一直安慰自己立砸,他們只是感情好掖疮,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著颗祝,像睡著了一般浊闪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上螺戳,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天搁宾,我揣著相機與錄音,去河邊找鬼倔幼。 笑死盖腿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凤藏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼堕伪,長吁一口氣:“原來是場噩夢啊……” “哼揖庄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起欠雌,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蹄梢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體禁炒,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡而咆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了幕袱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暴备。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖们豌,靈堂內(nèi)的尸體忽然破棺而出涯捻,到底是詐尸還是另有隱情,我是刑警寧澤望迎,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布障癌,位于F島的核電站,受9級特大地震影響辩尊,放射性物質(zhì)發(fā)生泄漏涛浙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一摄欲、第九天 我趴在偏房一處隱蔽的房頂上張望轿亮。 院中可真熱鬧,春花似錦蒿涎、人聲如沸哀托。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仓手。三九已至,卻和暖如春玻淑,著一層夾襖步出監(jiān)牢的瞬間嗽冒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工补履, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留添坊,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓箫锤,卻偏偏與公主長得像贬蛙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谚攒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)庫加密一般有兩種方式 1阳准、對所有數(shù)據(jù)進行加密 2、對數(shù)據(jù)庫文件加密 對比以上兩種方式馏臭,第一種方式的常見做法是是...
    肉肉要次肉閱讀 3,470評論 0 1
  • 介紹: 使用SQLite數(shù)據(jù)庫的時候野蝇,有時候?qū)τ跀?shù)據(jù)庫要求比較高,特別是在iOS8.3之前,未越獄的系統(tǒng)也可以通過...
    farawei閱讀 4,998評論 2 51
  • 在iOS開發(fā)過程中經(jīng)常需要用到SQLite來存儲數(shù)據(jù)绕沈,由于Apple的沙盒機制锐想,我們App的數(shù)據(jù)存儲在沙盒里面,...
    伍驍辛閱讀 4,415評論 8 15
  • 這篇文章介紹如何對數(shù)據(jù)庫文件進行加密乍狐,基于FMDB+SQLCipher赠摇,標(biāo)明踩過的坑,留給同樣掉進坑里的小伙伴參考...
    7544eb39c4ac閱讀 6,521評論 3 28
  • 北京夢之翼傳統(tǒng)文化家塾 學(xué)子今日成長的力量 : 1,郝澤迎同學(xué)進...
    夢之翼教育的簡書閱讀 110評論 0 0