sqlite 加密。

好久沒寫了,草稿箱存放了好多寫了一半的文章沒發。發現寫博客也是個不能拖的事情...   慢慢的會把它們全放出來的,關太久了會悶死吧大概.

正題

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

到此加密寫完了。就是這麼簡單.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章