在移動設備上,不管是ios還是android大家都喜歡使用sqlite,它體積小功能卻不錯,滿足大家的需求。但是使用過大家都清楚免費版sqlite數據是明文的,如果存放的是用戶敏感信息,只要取出應用中的數據庫,神馬用戶名,密碼都一目了然。
那么你還敢使用手機登錄什么網銀神馬的么??
使用免費版本的沒有加密模塊,如果需要加密模塊,需要大大們支付2000$,收費sqlite叫做 SEE,The SQLite Encryption Extension (SEE),鏈接?看下面咯.
SQLite數據庫設計中考慮了安全問題並預留了加密相關的接口。但是並沒有給出實現。SQLite 數據庫源碼中通過使用SQLITE_HAS_CODEC宏來控制是否使用數據庫加密。並且預留了四個結構讓用戶自己實現以達到對數據庫進行加密的效果。這四個接口分別是:
sqlite3_key(): 指定數據庫使用的密鑰
sqlite3_rekey():為數據庫重新設定密鑰用於為數據庫重新設定密鑰;
sqlite3CodecGetKey():返回數據庫的當前密鑰
sqlite3CodecAttach(): 將密鑰及頁面編碼函數與數據庫進行關聯。
Android數據庫訪問框架圖如下所示:
苦逼的程序們做好准備實現這幾個接口了么?
如果你還沒有動手寫代碼,那么恭喜你,下面有幾種方法可以不要那么幸苦了。使用開源的wxSQLite,這哥們幫我們做了加密的工作,並且開源了,大家可以下載使用。
wxSQLite把 SQLite 嵌入式數據庫與 wxWidgets 結合起來,使用 C++ 語法對 SQLite 數據庫的 C API 進行了封裝,而且作為 wxWidgets 的一個組件,自然很好的融合了其特點,使得 wxWidgets 與 SQLite 數據庫配合使用.不過是需要編譯生成。
SQLCipher 整個給錢吧。。。不用考慮了
SQLiteCrypt 免費的。狂歡吧
botansqlite3 這個介紹很少,作者呢 說他的項目和bodan一起分發。
下面是鏈接咯。
- SEE - 官方實現咯.
- wxSQLite - wxWidgets + c++ 實現加密
- SQLCipher - 使用開放 openSSL's 庫實現加密
- SQLiteCrypt - 修改與API
- botansqlite3 - botansqlite3 is an encryption codec for SQLite3 that can use any algorithms in Botan for encryption.