好久没写了,草稿箱存放了好多写了一半的文章没发。发现写博客也是个不能拖的事情... 慢慢的会把它们全放出来的,关太久了会闷死吧大概.
正题
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到此加密写完了。就是这么简单.