好久沒寫了,草稿箱存放了好多寫了一半的文章沒發。發現寫博客也是個不能拖的事情... 慢慢的會把它們全放出來的,關太久了會悶死吧大概.
正題
sqlite加密是採用的一個第三方開源庫wxSqlite。 https://sourceforge.net/projects/wxcode/files/Components/wxSQLite3/ 下載連接在此,打開有點慢可嘗試翻牆免費的有lantern等。
解壓後會得到這樣的目錄
然後把它拷貝到 也就是你SQLITE 所在的目錄(也可以是其它目錄下),這裏我拿COCOS2D-LUA 的一個項目做例子。 然後在XCODE 工程中添加其引用,只引用 sqlite3secure.c 和 sqlite3.h 。 (強調下是引用其它的不刪除文件哈還是留着)。
添加引用方法如圖:然後選你要添加的 點擊ADD 然後說說怎麼刪除引用(不是刪除文件),選中右鍵選DELETE 然後出來這個界面選Remove Reference 就OK了。到這裏添加工作完了。
接下來開始修改吧。修改 lsqlite3.c 中的圖中方法。這個是我根據我們需求改過的還有些部分沒貼出來別亂改哈。
你們應該改成這個
static int lsqlite_do_open(lua_State *L, const char *filename,) {
sdb *db = newdb(L); /* create and leave in stack */
if (sqlite3_open(filename, &db->db) == SQLITE_OK) {
if(sqlite3_key(db->db,“XXXXX”,strlen(“XXXXX”))!=SQLITE_OK)
return 0;
/* database handle already in the stack - return it */
return 1;
}
/* failed to open database */
lua_pushnil(L); /* push nil */
lua_pushnumber(L, sqlite3_errcode(db->db));
lua_pushstring(L, sqlite3_errmsg(db->db)); /* push error message */
/* clean things up */
cleanupdb(L, db);
/* return */
return 3;
}
這個樣子。sqlite3_key(db->db,“XXXXX”,strlen(“XXXXX”)
第二個參數是你數據庫的密碼,最後一個參數是密碼長度。
最後一步,最後一步。號外號外
添加預編譯宏:位置如下:
打開這兩個宏 SQLITE_HAS_CODEC CODEC_TYPE_AES256到此加密寫完了。就是這麼簡單.